JS でのバインディング イベントの実行順序の制御の詳細な紹介

黄舟
リリース: 2017-03-01 15:08:01
オリジナル
1192 人が閲覧しました

JS では、バインドされたイベントのデフォルトの実行時間は、キャプチャフェーズではなくバブリングフェーズにあります。このため、親クラスと子クラスの両方がイベントにバインドされている場合、子クラスにバインドされているイベントが最初に呼び出され、次に親クラスのイベントが呼び出されます。以下の例を直接見てください

      
  

ログイン後にコピー

id3 要素をクリックすると、実行結果は id2、id3、id1 になります

分析: obj2 バインディング メソッドがキャプチャ フェーズで実行されるため、obj1 はobj3 にバインド イベントはバブリングフェーズ中に実行されます。



JS はデフォルトでイベントを取得した後、ルート要素から開始してイベントのすべてのリッスン オブジェクトのキャプチャを開始し、それらを 1 つずつ実行します。泡立つ段階。イベントをバインドするときに、イベントがバブリングフェーズで実行されるかキャプチャフェーズで実行されるかを指定できます。

obj.addEventListener(event,function(){},bool)

bool: false、バブリングフェーズでの実行を表します

bool: true、キャプチャフェーズでの実行を表します

補足:イベントバブリング

バブリングを防ぐメソッド

w3cはe.stopPropagation()、IEはe.cancelBubble = trueを使用します

デフォルトの動作を防ぐため

w3c のメソッドは e.preventDefault() ですが、IE は e.returnValue = false;

を使用します。したがって、アピールの例では、すべてのイベントにバブリング動作を追加すると、次のようになります。アピールの JS コードは次のように変更されます:

ログイン後にコピー

id3 がクリックされたとき: 実行結果: id2

id2 がクリックされたとき: 実行結果: id2


id1 がクリックされたとき: 実行結果: id1


この例を通じて、元々はイベントのバブルアップを妨げ、またイベントが下位レベルにキャプチャされ続けることも妨げていたことがわかりました。


テストに使用したブラウザは次のとおりです: Google Chrome

バージョン 47.0.2526.106 m

上記は、JS でバインディング イベントを制御する実行順序の詳細な紹介です。さらに関連する内容については、注意してください。 PHP 中国語 Web サイト (www .php.cn)!


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!