2016-09-22 12 views
0

私はコード内に複数のドキュメントレディイベントリスナーを持っています。複数のドキュメントレディイベントリスナーの処理

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

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


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

ユーザーがページにアクセスしたときに、最初のドキュメントをすぐに呼び出せます。他の2つのドキュメントを呼び出す必要はありません。

グローバル変数を使用してこれをチェックすることはできません。私が望んでいるのは、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」は記録されますが、readyイベントはバインド解除されません。私はここに何かを逃していますか私は間違って何をしていますか?

+0

これは何もしないでください。これが何らかの問題の唯一の解決策であれば、何かに深刻な欠陥があります。 – adeneo

+0

なぜこのような3つの関数が必要ですか? 1つの解決策は '$(document).ready'関数を1つしか持たずに、他の2つを呼び出すことです – Howzieky

+0

" bind() "を紹介してくれてありがとうございますが、理解はhttps:/ /developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/Function/bind – racraman

答えて

0

event.stopImmediatePropagation()を試すことができます。
これが実行されるのと同じイベントに結合し、他のハンドラ防止:特にコードスニペットとの両方ので(私は.on("ready",.ready(を変更https://jsfiddle.net/L6j23hao/2/

$(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をjsfiddleは動作しません/エラーを生成しますが、なぜ私は理解しません。私が言うことができる限り、.ready(はうまく動作するはずです。)

関連する問題