2011-04-14 8 views
1

$(document).ready(function() { ... } 내에서 일반적으로 트리거되는 모든 것이 실행되지 않도록 DOM 준비 이벤트를 어떻게 든 가로 챌 수 있습니까? 그런 다음 나중에 코드가이되도록 이벤트를 수동으로 트리거합니까?jQuery : 원본 DOM 준비 이벤트를 차단 하시겠습니까?

제 경우에는 이미 $(document).ready(function() { ... }에 의존하는 많은 양의 기존 코드가 있습니다. 희망 사항은 수동으로 트리거 된 사용자 지정 이벤트에 의존하여 검색/교체 할 필요가 없다는 것입니다.

답변

0

jQuery.trigger() 는 해당 이벤트가 발생할 때 트리거되는 그러한 필요성에 대한 .bind() 또는 단축 방법 하나 부착

상관 이벤트 핸들러 이루어진다. 그러나 .trigger() 메소드를 사용하면 수동으로 을 실행할 수 있습니다. .trigger를 호출() 이벤트는 사용자가 자연스럽게 을 유발한다면 그들은 이 될 것 같은 순서로 핸들러를 실행합니다

+0

그러나 원래 이벤트가 트리거되지 않도록하려면 어떻게해야합니까? 지금까지 e.preventDefault()가이 특별한 경우에는 불가능하다고 말할 수 있습니다. – Wilco

+0

dom에서 이벤트를 트리거하고 싶지 않을 때 준비가되어있는 것 왜'ready '안에 쓸 것인가? – diEcho

+0

기본적으로 DOM 준비 이벤트에 의존하는 기존 스크립트의 커다란 컬렉션을 다시 작성하는 것을 피하려고합니다. 내 희망은 그것을 가로 채고 나중에 수동으로 트리거하는 몇 가지 방법이 있다는 것입니다. – Wilco

0

것은 당신이 뭔가 "일반적으로"트리거하지 않으려면, 그것을 $(document).ready(on_ready_func)에 있어서는 안됩니다. DOM 내용이로드되고 페이지 내용이로드되기 전에 모든 내용이로드됩니다.

대신 on_ready_func cherrypick에서 수동으로 다른 함수로 트리거하려는 항목에 manual_func이라고 말하면 원하는 이벤트에서 해당 함수를 호출하십시오.

트리거를 사용하여 ready 기능을 트리거 할 수 없으므로 별도 기능으로 사용하지 않는 한 func을 다시 실행할 수 없습니다.

분할이 가장 좋습니다.

var manual_func = function(){ 
    // Manual loads 
} 

var on_ready_func = function(){ 
    // only things to be loaded on dom ready 
    // e.g. 

    $('button#load_manual_trigger').bind('click', manual_func); 
} 

$(document).ready(on_ready_func); 

해피 코딩.

관련 문제