インシデントのトリガー(バブリングメカニズム)とソリューションの詳細な説明

イベントバブリングメカニズム
素人の用語では、親要素と子要素にそれぞれメソッドがあり、子要素メソッドがトリガーされると、親要素のメソッドもトリガーされることを意味します。

次の図に示すように、
divを作成し、divの下にボタン要素を作成し、divHandlerという名前のクリックイベントをdivにバインドし、
btnHandlerという名前のクリックイベントをボタンにバインドします。

ここに画像の説明を挿入

ボタンがクリックされた(btnボタンをクリックした

ときにdivフィールドがクリックされた(内側のdivクリックイベントをクリックした)ときに出力されることを実現たいと考えています。
ここに画像の説明を挿入

最初にdivをクリックする
と、右側のコンソールが印刷されていることがわかります(内側のdivのクリックイベントをクリックします)。
ここに画像の説明を挿入
ボタンをクリックします。ボタン
のクリックメソッドがトリガーされているだけでなく、トリガーされていることもわかります。 divのクリックメソッド

ここに画像の説明を挿入

上記は、イベントのバブリングメカニズムの現れで​​す

2つの解決策を次に示し
ます。1。イベントトリガーの下部に(.stop)を追加します
。2。div(.self)の制限メカニズムを追加します。

1.イベントの下部にストップを追加します

(stopメソッドはイベントのバブリングメカニズムを完全に防ぐことができます)

ここに画像の説明を挿入

2.divに制限メカニズムを追加します

selfメソッドの機能は次のとおりです。イベント関数は、現在の要素がクリックされたときにのみトリガーされます
(このメソッドはバブリングの欠陥を解決します
ここに画像の説明を挿入

バブリングメカニズムの欠陥を自己解決

最も外側のdivに自分自身を追加すると、
内側のdivは処理されません

ここに画像の説明を挿入

外側のdivをクリックします

ここに画像の説明を挿入

内側のdivをクリックします

ここに画像の説明を挿入ボタンをクリックします
ここに画像の説明を挿入

ボタンイベントがトリガーされると、内側のdivイベントもトリガーされることがわかります。
自己追加された外側のdivのみがイベントをトリガーしません。

上記は、インシデントのバブリングメカニズムと解決策の概要です。

おすすめ

転載: blog.csdn.net/Hambur_/article/details/109389587