2012-08-13 19 views
5

:コードで書き出さもちろんjQuery.ready()は自分自身への呼び出しをどのように扱いますか?一例として、

$(function(){ 
    //do stuff 
    $(function(){ 
     //do other stuff 
    }); 
}); 

これは意味をなさないように思われます。しかし、HTML要素で動作するプラグインは、メインスクリプトの.ready()内の要素で実行されている間に.ready()を使用することがあります。 jQueryはこれをどのように正確に処理しますか?明らかに機能しますが、何か特別なことをしますか?

答えて

2

DOMが初期化された後に.ready()が呼び出された場合、新しい ハンドラがすぐに実行されます。

これは最初の関数が実行されると、内側の1はまた、jQueryのは、あなたは、単一のイベントに複数の機能をバインドすることができますし、それが無いと仮定して、それらすべてを(呼び出しますすぐ

実行されることを意味します1は

)エラーが発生しますが、すでにロードされたページ上で実行することにより、動作をテストすることができます

jQuery(document).ready(function(){ 
     for(i=0;i<1000000;i++); 
     console.log('2'); 
    }); 
console.log('1'); 
+1

それは '戻っ)(' .ready(前に)「すぐに」_synchronously_のようですか? – nnnnnn

+0

はい、それはsinchronousです。 jQuery(document).ready(function(){for(i = 0; i <1000000; i ++){;}; console.log( '2');});これはすでにロードされているページで実行することでテストできます。 console.log( '1'); –

+0

私はこれを得ます: 'global .ready()START、0ms;グローバル.ready()END、8ms;プラグイン.ready()()START、11ms;プラグイン.ready()END、12ms'。結果は、グローバルな.readyの開始時または終了時にプラグインを呼び出すかどうかにかかわらず、一定です。したがって、プラグインの中の.ready呼び出しは、それが呼び出された既に実行中の.readyの後でキューに入れられているようです – Armatus

関連する問題