ホームページ >ウェブフロントエンド >jsチュートリアル >イベントバブリングの仕組みと使い方を解析する
イベント バブリングは、フロントエンド開発でよく使用されるイベント配信メカニズムです。この記事では、イベント バブリングの原理と応用について詳しく説明し、読者の理解を助けるコード例を示します。
1. イベント バブリングの原理
イベント バブリングとは、要素上のイベントがトリガーされると、そのイベントがルート要素まで段階的に上位の要素に渡されることを意味します。言い換えれば、イベントは最も具体的な要素から始まり、より一般的な要素に向かって渡されます。
イベント バブリングの原理は、次の点に要約できます。
2. イベント バブリングの適用
たとえば、複数の子要素ボタンを含む親要素 div があり、各ボタンには同じクリック イベント ハンドラーがあります。イベント バブリングを使用する場合、以下に示すように、イベントを親要素 div にバインドするだけで済みます。
<div id="parentElement"> <button>按钮1</button> <button>按钮2</button> <button>按钮3</button> </div> <script> var parentElement = document.getElementById('parentElement'); parentElement.addEventListener('click', function(e) { console.log(e.target.innerHTML + '被点击了'); }); </script>
上記のコードでは、クリック イベント ハンドラーを親要素 div にバインドします。子要素のボタンがクリックされると、イベントが親要素 div にバブルアップし、親要素のイベント ハンドラーをトリガーします。イベントオブジェクトのtarget属性を出力することで、クリックされた特定のボタンを取得できます。
たとえば、前の例では次のように新しいボタン button を動的に追加しました:
<div id="parentElement"> <button>按钮1</button> <button>按钮2</button> <button>按钮3</button> </div> <script> var parentElement = document.getElementById('parentElement'); parentElement.addEventListener('click', function(e) { if (e.target.tagName.toLowerCase() === 'button') { console.log(e.target.innerHTML + '被点击了'); } }); var newButton = document.createElement('button'); newButton.innerHTML = '新按钮'; parentElement.appendChild(newButton); </script>
上記のコードでは、親要素 div にバインドします。クリック イベント ハンドラーは次のとおりです。イベントによってトリガーされたターゲット要素がボタンであるかどうかを判断して、処理する必要のない要素を除外するために作成されます。このようにして、新しく追加された要素ごとに個別のイベントをバインドすることなく、動的に追加された要素のクリック イベントを処理できます。
たとえば、以下に示すように、クリック イベントを子要素のボタンにバインドし、イベント ハンドラーで stopPropagation() メソッドを呼び出します。
<div id="parentElement"> <button>按钮1</button> <button>按钮2</button> <button>按钮3</button> </div> <script> var buttons = document.getElementsByTagName('button'); for (var i = 0; i < buttons.length; i++) { buttons[i].addEventListener('click', function(e) { console.log(e.target.innerHTML + '被点击了'); e.stopPropagation(); }); } var parentElement = document.getElementById('parentElement'); parentElement.addEventListener('click', function(e) { console.log('父元素被点击了'); }); </script>
上記のコードでは、子要素のボタンがクリックされると、イベントは子要素自体のクリック イベント ハンドラーをトリガーし、stopPropagation() メソッドを呼び出してイベントの配信の継続を停止します。したがって、親要素のクリック イベント ハンドラーは起動されません。
概要:
イベント バブリングは、フロントエンド開発で一般的に使用されるイベント配信メカニズムであり、イベント バインディングを簡素化し、イベント委任を実装し、イベント配信を制御できます。イベントバブリングを適切に利用することで、コードの保守性と実行効率を向上させることができます。
以上がイベントバブリングの仕組みと使い方を解析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。