Guy は次のコードについて少し混乱しています。次のコードには 2 つの関数があり、どちらが最初に Function1() または Function2 () を実行しますか?
$(document).ready(function() {
// some code here for function1()
});
$(document).ready(function() {
// other code here for function2()
});
Guy は次のコードについて少し混乱しています。次のコードには 2 つの関数があり、どちらが最初に Function1() または Function2 () を実行しますか?
$(document).ready(function() {
// some code here for function1()
});
$(document).ready(function() {
// other code here for function2()
});
関数 1 が最初に実行されます。jQuery は常に、バインドされた順序でイベント ハンドラーを実行します (委任されたハンドラーは、イベントが DOM を介してバブルアップするときにのみ発生するため、ダイレクト ハンドラーの後に実行されることに注意してください。ただし、ここでは当てはまりません)。
on
これは、メソッド docsの括弧内に記載されています。
(要素にバインドされたイベント ハンドラーは、バインドされたのと同じ順序で呼び出されます。)
どちらも実行されます。ドキュメントの準備ができたときにトリガーするイベントを登録しています。同じアクションによってトリガーされた場合でも、特定のオブジェクトに対して複数のイベントを登録できます。
通常、最初に宣言されたコードが最初にトリガーされることを期待しますが、異なるブロックに依存関係があるコードは記述しません。失敗しやすいからです。
各コンポーネントが準備完了ブロックを持つことができるコンポーネントベースのフレームワーク(Wicketなど)でこのようなシナリオを想定しますが、それらが互いに独立している場合、どちらが最初に実行されるかを気にする必要はありません。
実行順序が問題になるコードがある場合は、これを回避するために他のアプローチを探すことをお勧めします。他の回答が既に述べているように、1 つの注文を期待できますが、すべてのブラウザーの実装を信頼することはできません。さらに悪いことに、将来の実装では信頼できません。
したがって、一般的なルールとして、物事をシンプルに保ちます。1 つのオブジェクトに対して複数のイベントが必要な場合は、それらが依存していない限り問題ありません。それ以外の場合は、同じブロックに配置します。
まず document.ready が最初に実行されます。
最初の関数 1 が最初に実行されます。これは、jQuery が記述されたとおりに常にハンドラーを実行するためです。
プラス
$()
それらはいくつでも持つことができ、関数または$(document).ready()
関数が実行される順序で実行されます。(つまり、各ハンドラがキューに追加されます)