2016-09-22 3 views
0

내 코드에 여러 개의 준비 완료 이벤트 리스너가 있습니다.여러 문서 준비 이벤트 리스너 처리

$(document).ready(function() { 
    console.log("hello james") 
}); 

$(document).ready(function() { 
    console.log("hello cindy") 
}); 


$(document).ready(function() { 
    console.log("hello dave") 
}); 

사용자가 페이지를 방문 할 때 첫 번째 문서를 호출하기를 원합니다. 다른 두 문서 준비가 필요 없어.

글로벌 변수를 사용하여이를 확인할 수 없습니다. 내가 원하는 것은 bind을 사용하는 것입니다. 내 이론은 그 코드를 설정함으로써 ...

$(document).bind("ready", function() { 
    console.log("hello james") 
}); 

$(document).bind("ready", function() { 
    console.log("hello cindy") 
}); 


$(document).bind("ready", function() { 
    console.log("hello dave") 
}); 

첫 번째 바인드 만 호출합니다. 그것이 현재 bind의 작동 방식에 대한 나의 현재의 이해입니다.

여기 키커가 있습니다. 필자가해야 할 일은 일단 바인딩이 실행되면 (첫 번째 바인드가 실행되어 "hello james"가 내 콘솔 로그에 출력 될 것입니다.) 준비된 문서의 바인딩을 해제해야합니다. 내가하고있는 일을 생각하고 있었어.

$(document).bind("ready", function() { 
    console.log("hello james") 
    $(document).unbind("ready"); 
}); 

$(document).bind("ready", function() { 
    console.log("hello cindy") 
}); 


$(document).bind("ready", function() { 
    console.log("hello dave") 
}); 

그러나 그것은 작동하지 않는다. "hello james"는 로그되지만 준비 이벤트는 언 바인드되지 않습니다. 내가 여기서 뭔가를 놓치고 있니? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

이 문제를 해결하는 유일한 방법은 심각하게 결함이있는 내용입니다. – adeneo

+0

왜 이처럼 3 가지 기능이 필요합니까? 하나의 해결책은 단지 하나의'$ (document) .ready' 함수를 가지고 그 안에있는 다른 두 개의 함수를 호출하는 것일 것입니다. – Howzieky

+0

"bind()"를 소개해 주셔서 감사합니다. 그러나 이해는 https ://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind – racraman

답변

0

시도해 볼 수 있습니다 event.stopImmediatePropagation().
이 실행되는 같은 이벤트에 바인딩 다른 핸들러를 방지 :

$(document).on("ready",function(e) { 
 
    e.stopImmediatePropagation(); 
 
    console.log("hello james"); 
 
}); 
 
$(document).on("ready",function(){console.log("hello cindy");}); 
 
$(document).on("ready",function(){console.log("hello dave");});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
jsfiddle : 때문에

https://jsfiddle.net/L6j23hao/2/ (나는 .on("ready",.ready(을 변경 그렇지 않으면 코드와 모두 jsfiddle 작동하지 않습니다/오류를 생성, 왜 이해가 안 돼요. 지금까지 내가 말할 수있는 .ready( 잘 작동합니다.)