35

jQueryについて質問があります$(document).ready

2 つのJavaScriptファイルを含む HTML ページがあるとします。

<script language="javascript" src="script1.js" ></script>
<script language="javascript" src="script2.js" ></script>

これらの両方のスクリプト ファイルで、次のようになっている$(document)とします。

script1.js内:

$(document).ready(function(){
    globalVar = 1;
})

script2.js内:

$(document).ready(function(){
    globalVar = 2;
})

今私の質問は次のとおりです。

  1. これらの準備完了イベント関数は両方とも起動されますか?
  2. はいの場合、両方のドキュメントが同時に準備されるため、解雇される順序はどうなりますか?
  3. このアプローチは推奨されますか、それとも理想的には $(document).ready を 1 つだけにする必要がありますか?
  4. 実行順序はすべてのブラウザ (IE、FF など) で同じですか?

ありがとうございました。

4

5 に答える 5

34
  1. これらの準備完了イベント関数は両方とも起動されますか?

はい、両方とも解雇されます。

  1. ドキュメントは両方に対して同時に準備ができているため、解雇される順序はどうなりますか?

それらが表示される方法 (上から下) は、ready イベントが 1 回発生し、すべてのイベント リスナーが次々に通知されるためです。

  1. このアプローチは推奨されますか、それとも理想的には $(document).ready を 1 つだけにする必要がありますか?

そのようにすればOKです。それらを同じブロック コードに含めることができれば、管理が容易になりますが、それだけです。更新:どうやら言い忘れていたようですが、これを複数のファイルで行うと、JavaScript コードのサイズが大きくなります。

  1. 実行順序はすべてのブラウザ (IE、FF など) で同じですか?

はい、jQuery はブラウザー間の正規化をすぐに実行できるためです。

于 2011-06-22T06:41:14.283 に答える
10

ここを参照してください: jQuery - 複数の $(document).ready(function() {}); を持つのは悪いことですか? そしてここ:チュートリアル:複数の $(document).ready()

  1. はい
  2. 付ける順番。jQuery は内部的readyListにwith Deferredobjectsを維持します。
  3. それは部分的に好みの問題です。準備が整ったハンドラーを1 つ持つことで、発生しているすべての処理の概要を把握できます。複数(つまり、インクルードされたファイルごとに 1 つ) を使用すると、コードをよりモジュール化できます (つまり、.jsファイルをインクルードまたは削除し、確実に提供され、独自の Ready ハンドラをバインドします)。
  4. はい - 添付の順序。
于 2011-06-22T06:47:39.827 に答える
2

globalVar現在のブラウザーでは、スクリプトが含まれている順序で実行されるハンドラーと2、2 番目のスクリプト参照の後に実行されるハンドラーの両方を期待できます。

于 2011-06-22T06:39:49.253 に答える
-1

完全な制御が必要な場合は、$(document).read();を1 つだけにすることを強くお勧めします。

ajaxを介して HTML の一部をロードし、ajax 応答に $(document).ready(); スクリプトが含まれていて、$(document).ready(); を起動したい場合。ajaxコールバックのscript1.js、script2.jsなどから..大量のコードを複製する必要があります....

幸運を!

/ $(window).ready(); ;)

于 2011-06-22T07:00:57.950 に答える
-1
  1. 二人とも解雇される
  2. すべてのほこりが落ち着くと、変数の値は 2 になります。
  3. 推奨されていない主なことは、Google PageSpeed と Yahoo YSlow が推奨する 2 つの異なる JS ファイルを使用することです。すべての Javascript コードを同じファイルに含めることをお勧めします。同じイベント ハンドラーに関しては、正直なところ、そうする理由がわかりません。コードの可読性が低下するだけです。
  4. それには答えがありません。
于 2011-06-22T10:13:14.710 に答える