2011-08-04 7 views
2

페이지가로드 된 후 어떻게 이벤트를 트리거하고 바인딩 할 수 있습니까?jQuery 트리거 및 페이지로드시 이벤트에 바인드 하시겠습니까?

오전 데 문제는 한 곳에서 페이지로드에서 나는 이벤트 발생한다는 것입니다 :

//producer.js 
pageLoaded(){ 
    var e = jQuery.Event("eventA"); 
    $("body").trigger(e); 
    ...} 

다른에

내가 그것을 바인딩 :

//consumer.js 
pageLoaded(){ 
    $("body").bind("eventA", function(args){console.log("Got it!");}); 
    ... } 

문제가 있다는 것입니다을 처음으로 이벤트가 발생하면 (페이지가로드 될 때) - 소비자는 그것을 볼 수 없습니다. 두 번째 시간 이벤트가 발생하지만 모든 것이 좋습니다!

소비자가 듣기 시작하기 전에 이벤트가 실제로 실행되기 때문에 이것이라고 생각합니다.

이벤트에 "트리거"및 "리스너"를 만들 때 따라야 할 우수 사례가 있습니까? 페이지를로드 할 때나 이후에 모두 작동해야합니까?

답변

0

도움을 수도 있고, 다른 다음.

그래서 나는 내가 이해

1

이벤트를 트리거 할 때 리스너가없는 경우 아무 것도 나타나지 않으므로 첫 번째 트리거에서 아무 것도 표시되지 않습니다. 당신은 document.ready의 순서를 (제어해야처럼

+0

consumer.jsproducer.js 의존 할 수 있지만,이 문제를 해결 얻을 수있는 방법? 페이지로드시 이벤트가 "캐치"되어야합니다. 그러나 페이지로드시 트리거되도록해야합니다. 이것은 광기 다 !!! – drozzy

+0

그런 다음 consumer.js가 producer.js보다 먼저로드되었는지 확인하십시오. – ShankarSangoli

+0

@drozzy - 제 대답이 의미가 있으면 감사합니다. – ShankarSangoli

0

는 .. 호출) 소리 this question 또는 this article에 아마 응답은 첫 번째로드 한 자바 스크립트 파일에 나를 수 RequireJS 같은 것을 사용하면

관련 문제