2011-10-06 4 views
0

다음 코드를 사용하여 joomla 설치에서 id와 함께 URL을 추가하려고합니다 (테스트와 마찬가지로).jquery 및 preventDefault()를 사용하여 URL 추가

jQuery('body').click(function(e) { 
    e.preventDefault(); 
    window.location = jQuery(this).attr('href') + '#test'; 
}); 

지금이 바로 "#test"전에 문자열 "정의"를 추가를 제외하고 어느 정도 작동합니다.

예 :

www.website.com/articles/undefined#test

"정의"를 추가하고, 그것을 막을 수있는 방법이되는 이유는

?

감사

body 태그가 href 속성을 가지고 있지 않기 때문이다

답변

2

body 태그 즉 링크 이루어집니다.

window.location.hash = '#test'; 

을 대신 사용하십시오.

+0

아, 그게 훨씬 간단한 해결책입니다, 고마워요! – Griffin

0

. 이것은 일반적으로 href 속성이없는

<a href="some link">Link</a> 
2

this은 "href"속성이없는 body 요소를 나타냅니다. 따라서 .attr()으로 전화하면 "undefined" 문자열로 변환되는 undefined가 반환됩니다.

"#test"를 URL에 추가하려는 경우 완전한 URI를 지정할 필요가 없습니다. 대신 그냥 "#test"이 경우, 상대 URL을 지정할 수 있습니다

location.href = "#test"; 

당신이 문서에있는 링크에 "#test"를 추가하려는 경우, 당신은 링크 만 바인딩해야합니다 외계인과 :

jQuery("a[href]").click(function(e) { 
    e.preventDefault(); 
    location.href = jQuery(this).attr('href') + '#test'; 
}); 

몇 가지 다른 메모. href를 얻으려면 jQuery를 사용할 필요가 없습니다. 그냥 할 간단하고 읽기 (IMHO)를 다음과 같습니다

jQuery("a[href]").click(function(e) { 
    this.href += "#test"; 
}); 
: 오히려 기본을 방지하고 탐색을 수행하는 자바 스크립트를 사용하는 것보다,

location.href = this.href + "#test"; 

를 그리고, 당신은 단지 링크의 href를 수정할 수 있습니다