2

Guy は次のコードについて少し混乱しています。次のコードには 2 つの関数があり、どちらが最初に Function1() または Function2 () を実行しますか?

$(document).ready(function() {
  // some code here for function1()
});
$(document).ready(function() {
  // other code here for function2()
});
4

4 に答える 4

3

関数 1 が最初に実行されます。jQuery は常に、バインドされた順序でイベント ハンドラーを実行します (委任されたハンドラーは、イベントが DOM を介してバブルアップするときにのみ発生するため、ダイレクト ハンドラーの後に実行されることに注意してください。ただし、ここでは当てはまりません)。

onこれは、メソッド docsの括弧内に記載されています。

(要素にバインドされたイベント ハンドラーは、バインドされたのと同じ順序で呼び出されます。)

于 2013-07-05T11:28:19.037 に答える
1

どちらも実行されます。ドキュメントの準備ができたときにトリガーするイベントを登録しています。同じアクションによってトリガーされた場合でも、特定のオブジェクトに対して複数のイベントを登録できます。

通常、最初に宣言されたコードが最初にトリガーされることを期待しますが、異なるブロックに依存関係があるコードは記述しません。失敗しやすいからです。

各コンポーネントが準備完了ブロックを持つことができるコンポーネントベースのフレームワーク(Wicketなど)でこのようなシナリオを想定しますが、それらが互いに独立している場合、どちらが最初に実行されるかを気にする必要はありません。

実行順序が問題になるコードがある場合は、これを回避するために他のアプローチを探すことをお勧めします。他の回答が既に述べているように、1 つの注文を期待できますが、すべてのブラウザーの実装を信頼することはできません。さらに悪いことに、将来の実装では信頼できません。

したがって、一般的なルールとして、物事をシンプルに保ちます。1 つのオブジェクトに対して複数のイベントが必要な場合は、それらが依存していない限り問題ありません。それ以外の場合は、同じブロックに配置します。

于 2013-07-05T11:32:29.580 に答える
0

まず document.ready が最初に実行されます。

于 2013-07-05T11:29:24.873 に答える
0

最初の関数 1 が最初に実行されます。これは、jQuery が記述されたとおりに常にハンドラーを実行するためです。

プラス

$()それらはいくつでも持つことができ、関数または$(document).ready()関数が実行される順序で実行されます。(つまり、各ハンドラがキューに追加されます)

于 2013-07-05T11:29:40.920 に答える