導入例示する この記事では、JavaScript でのイベントの委任 (delegate) の使用方法を例を使って紹介します。 イベント委任の概要 イベント委任 (イベント プロキシとも呼ばれる) は、JavaScript でイベントをバインドするための一般的な手法です。これは、本来は子要素にバインドする必要がある応答イベントを親要素または外部要素に委任し、外部要素がイベント監視の責任を引き受けられるようにすることです。 イベント委任の原則は、DOM 要素のイベント バブリングです。 イベント委任の利点 1. メモリを節約し、イベントバインディングを減らす 元々、イベントはすべての子要素にバインドする必要がありましたが、イベント委任を使用した後は、必要なイベント バインディングは 1 つだけになります。 2. イベントは動的にバインドでき、新しく追加されたサブオブジェクトイベントはバインドされたイベントによって処理できます。 新しく追加された子オブジェクトによって生成されたイベントは、最終的に親要素にバブルアップされ、処理できるようになるため、 例: イベントの委任要件: リスト要素をクリックするとコンテンツがポップアップ表示されるリスト。 記述方法1: イベント委譲イベントを外側の要素にバインドするだけです。 <!doctypehtml> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <title>これはタイトルです</title> </head> <本文> <ul id="id-ul"> <li>私は最初のliです</li> <li>私は2番目のliです</li> <li>私は3番目のliです</li> </ul> <スクリプト> ul = document.getElementById('id-ul'); とします。 ul.addEventListener("クリック", 関数(ev) { アラート(ev.target.innerText); }) </スクリプト> </本文> </html> 結果 記述方法2: 各子要素はイベントにバインドされます各子要素にはイベントがバインドされています。 <!doctypehtml> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <title>これはタイトルです</title> </head> <本文> <ul id="id-ul"> <li>私は最初のliです</li> <li>私は2番目のliです</li> <li>私は3番目のliです</li> </ul> <スクリプト> li = document.querySelectorAll('#id-ul li') とします。 for (let liElement of li) { liElement.addEventListener("クリック", 関数(ev) { アラート(ev.target.innerText); }); } </スクリプト> </本文> </html> 結果 例: 新しい要素を追加する要件: 「生成ボタン」をクリックするたびに、サブリスト要素が生成されます。その後、リスト要素をクリックするたびに、その内容がポップアップ表示されます。 記述方法1: イベント委譲<!doctypehtml> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <title>これはタイトルです</title> </head> <本文> <ul id="id-ul"> <li>1</li> <li>2</li> </ul> <button id="btn">クリック</button> <スクリプト> num = 3 とします。 eUl = document.querySelector("#id-ul"); eButton を document.querySelector("#btn") とします。 eButton.addEventListener("クリック", 関数() { newLi = document.createElement("li"); eUl.appendChild(newLi); 新しいLi.innerText = num++; }) eUl.addEventListener("クリック",関数(イベント) { アラート(event.target.innerText); }) </スクリプト> </本文> </html> 結果 ご覧のとおり、既存の要素と新しく作成された要素の両方のイベントが処理されます。 記述方法2: 各子要素はイベントにバインドされます<!doctypehtml> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <title>これはタイトルです</title> </head> <本文> <ul id="id-ul"> <li>1</li> <li>2</li> </ul> <button id="btn">クリック</button> <スクリプト> num = 3 とします。 eUl = document.querySelector("#id-ul"); eButton を document.querySelector("#btn") とします。 eLi = document.querySelectorAll("#id-ul li"); eButton.addEventListener("クリック", 関数() { newLi = document.createElement("li"); eUl.appendChild(newLi); 新しいLi.innerText = num++; }) (eLiのeLi要素とする) { eLiElement.addEventListener("クリック",関数(イベント) { アラート(event.target.innerText); }) } </スクリプト> </本文> </html> 結果 元の要素のクリック イベントは処理されますが、新しく追加された要素は処理されないことがわかります。 これで、JavaScript イベント委譲の詳細な使用例に関するこの記事は終了です。JavaScript イベント委譲に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
WeChatアプレットはスクロールビューを使用して左右のリンクを実現します。参考までに、具体的な内容...
この記事では、マウスをドラッグしてdivのサイズを調整するJavaScriptの具体的なコードを参考...
MySQL は、ネットワーク経由だけでなく、名前付きパイプ経由でも接続できます。MySQL への接続...
マイクリMyCLI は、自動補完と構文の強調表示を備えた MySQL、MariaDB、および Per...
目次ドキュメント オブジェクト モデル (DOM) DOM と JavaScript DOMツリーの...
注: ソフトウェアのインストールの基本ディレクトリ パスは /usr/local です。ソフトウェア...
この記事の例では、vue3 が独自のページングコンポーネントをカプセル化する具体的なコードを参考まで...
1. nginx.conf の http{} に次のコードを追加します。 limit_conn_zo...
1. 目標: mysql の character_set_server の値を latin1 から ...
この記事では、ミニプログラムで製品属性選択または仕様選択を実装するための具体的なコードを参考までに共...
目次クラス void のポイントES6 矢印関数ヴュートファイvue-cli非同期と同期実行と展開ヒ...
トランジションドキュメントアドレスは、フェードインとフェードアウト効果を実現するための背景ポップアッ...
テキストエリアタグのサイズは不変ですコードをコピーコードは次のとおりです。 <textarea...
目次1. はじめに2. 実際の事例1. App.vueを変更する2. レイアウトを調整する3. ジャ...
目次フラット化とは何か再帰トストリング減らすアンダーコア_.平坦化_。連合_。違い要約するフラット化...