答えて

1

本質的に、それは依存する。イベントの2つのフェーズがあります。キャプチャ(最初に実行)、ドキュメントを閉じる、バブルは要素を上に移動します。

JSは両方を行うことができます。そのため、カスタムイベントを作成するときに、3つ目のブール変数があると聞きました。

parent.addEventListener('click',doSomething2,true) child.addEventListener('click',doSomething,false)

その最後の引数がtrueの場合、イベントハンドラは、それがfalseの場合、イベントハンドラは、バブリング段階に設定され、キャプチャ段階に設定されています。

バックのサンプルコードを参照するとthis pageを引用する:ユーザーが子要素をクリック

場合は次の処理が行われます。

  1. クリックイベントがキャプチャ段階で開始します。このイベントは、子の祖先要素にキャプチャフェーズのonclickイベントハンドラがあるかどうかを調べます。

  2. イベントは、親イベントを検出します。 doSomething2()が実行されます。

  3. イベントはターゲット自体に移動し、キャプチャフェーズのイベントハンドラはそれ以上見つかりません。イベントはバブルフェーズに移行し、バブルフェーズのために子に登録されているdoSomething()を実行します。

  4. イベントは上向きに移動し、ターゲットの祖先要素にバブルフェーズのイベントハンドラがあるかどうかを確認します。これは事実ではないので、何も起こりません。

私は上記のリンク先のページには、道より多くの情報を持っていますが、うまくいけば、それは基本的な質問に答えます。

関連する問題