2012-10-09 4 views
3

특정 조건에서 DOMContentReady 이벤트를 실제로 발생시키지 않기 위해 jQuery ready 핸들러를 바인딩해야하는 상황이 있습니다. 이러한 핸들러는 다양한 include 파일, 플러그인 등 다양한 위치에 바인딩됩니다. 그래서 내 페이지 상단의 스크립트에서 일종의 글로벌 변수를 설정하고 조건을 넣어 모든 $(document).ready() 바인딩 앞에서이 변수를 검사 할 수는 있지만 오히려하지 않을 것입니다.jQuery 준비 핸들러가 실행되지 못하도록 함

이상적으로는 두 가지 중 하나

  • (가) 그 .ready()
  • 내가 부를 수있는 방법에 호출을 무시하고 그것을 말할 것 포함하기 전에 내가 jQuery 오브젝트에 설정 할 수있는 속성을 찾고 있어요 DOMContentReady가 실행되기 전에 인라인 스크립트에서 문서 끝으로 ready() 핸들러를 바인딩 해제합니다.

명백한 것은 $(document).unbind('ready')이 아닙니다. 내 생각에 .ready()은 일반적인 이벤트 바인딩이 아니기 때문입니다.

이 작업을 수행 할 수 있습니까? 그렇다면 어떻게?

막연한 아이디어는 jQuery 프로토 타입을 확장하고 ready()을 내가 소개 할 새로운 속성을 확인할 수있는 방법으로 대체하는 것입니다. 말이 돼? 당신이 당신의`unbind` 코드를 넣어되는 경우

+0

를 사용해야합니까? 'ready' 함수 앞에 넣으면,'unbind'하지 않아야합니다. 안쪽에 또는'ready' 기능 후에 넣으면. 이미 부름을 받았습니다. 특정 조건이 일치하면'ready' 함수 안에'false'를 반환 할 수 있습니다. – Jashwant

+0

아니요,'$ (document) .ready()'에 대한 호출은'$ (document) .unbind ('ready')에 의해 언 바운드되지 않습니다. 왜 그런지 정확히 모르겠습니다. – Dan

+0

코드를 보여줄 수 있다면 당신을 명확히 할 수 있습니다. Btw, 이미 대답을 찾은 것 같습니다. – Jashwant

답변

7

당신은 holdready

$.holdReady(true); 
$.getScript("myplugin.js", function() { 
    $.holdReady(false); 
}); 
+0

유망 해 보입니다. 나는이 순간에 내 앞에서 dev에 환경을 가지고 있지 않지만, 그것이 내가 필요한 것 같아요. – Dan

+0

또 다른 jQuery의 숨겨진 기능. +1 – Jashwant

관련 문제