2010-06-13 10 views
0

링크의 해시 태그를 변경하는 간단한 jQuery 스크립트를 작성했습니다. Wordpress에서 IntenseDebate 주석을 사용하고 있기 때문에이 작업을 수행하지만 주석 링크는 여전히 이전 주석의 id를 대체했습니다. JavaScript가 활성화되어 있으면 사용자가 주석 링크를 클릭하여 IntenseDebate 주석으로 가져갈 수 있도록 jQuery를 사용하고 있습니다. 활성화되어 있지 않으면 IntenseDebate에 자바 스크립트가 필요하기 때문에 전통적인 주석으로 처리됩니다.DOM 준비가 완료되면 jQuery 코드가 실행되지 않습니다.

링크의 끝에 해시 태그를 변경하려면이 스크립트에있는 문제가 있습니다. 현재 URL은 "someurl.com/ #respond"이지만 "someurl.com/ #comments"으로 변경하려면 스크립트가 필요합니다. 무슨 일이 일어나고 스크립트가 작동하지 않습니다,하지만 내 구문이 올바른지 그래서 나는 복사하고 코드를 파이어 버그의 콘솔에 붙여 넣기로 결정하고 코드가 완벽하게 실행되었다고 믿습니다. 변경하려는 링크가 이제 정확하다는 것을 알았습니다. 클릭하면 원하는대로 작동했습니다. 그래서 내가 이해할 수없는 것은 코드가 가정 될 때 코드가 실행되지 않는 이유입니다. 나는 $ (document) .ready()를 사용하고 있으며 다른 jQuery도 잘 실행되는 페이지에있다. 나는 심지어 간단한 HTML 페이지에서 Wordpress로 인해 발생할 수있는 모든 문제를 테스트 한 결과 동일한 결과를 얻었습니다. 왜 이런 일이 일어날 지 아는 사람이 있습니까? 당신의 도움에 대한

jQuery.noConflict(); 
jQuery(document).ready(function($) { 
$("a[href$='respond']").each(function() { 
    this.href = this.href.replace("respond", "comments"); 
}); 
})(jQuery); 

정말 감사합니다 :

여기 (워드 프레스는 다른 프레임 워크를 사용합니다 때문에이 noConflict를 사용하고 있습니다) 내 코드입니다! 당신은 당신에게 유형의 오류를 줄 것이다 jQuery(document).ready()의 결과를 호출 할

답변

3

, 당신은이 패턴을 찾고 있습니다 : 위의 코드에서

(function ($) { 
    // inside this function, you can use `$` 
    $(document).ready(function() { 
    $("a[href$='respond']").each(function() { 
     this.href = this.href.replace("respond", "comments"); 
    }); 
    }); 
})(jQuery.noConflict()); 

가 즉시 호출되는 익명 함수를 선언, 결과 전달 해당 함수에 대한 $ 인수로 jQuery.noConflict()입니다.

+0

아, 감사합니다.이 코드는 방화범이 들려오는 유형 오류를 발생시키지 않습니다. 그러나, 그것은 내 것과 같이 실행되지 않습니다. 페이지를로드 할 때 아무것도 변경되지 않지만 콘솔에 붙여넣고 실행하면 완벽하게 작동합니다. –

1

.ready()를 호출 할 때 인수를 전달할 필요가 없습니다. jQuery는 함수를 호출 할 때 jQuery 객체를 초기 매개 변수로 전달합니다.

jQuery.noConflict(); 
jQuery(document).ready(function($) { 
    $("a[href$='respond']").each(function() { 
     this.href = this.href.replace("respond", "comments"); 
    }); 
}); 

http://api.jquery.com/ready/

0

내부 행은 다음과 같습니다

jQuery.noConflict(); 
jQuery(document).ready(function($) { 
    $("a[href$='respond']").each(function() { 
     $(this).attr("href", $(this).attr('href').replace("respond", "comments")); 
    }); 
}); 

this.href에 직접 대체 캐스팅 좋아하지 않는 브라우저;

편집 : 또는 어쩌면 히사시가있는 브라우저 일 수도 있습니다.

관련 문제