導入例示する この記事では、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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
負荷は通常、システム設計時に予測されます。システムがパブリック ネットワークに公開されている場合、悪...
この記事の例では、セカンダリメニュー効果を実現するためのJSの具体的なコードを参考までに共有していま...
MySQLのパーティショニングは、非常に大きなテーブルを管理するのに役立ちます。MySQLのパーティ...
おすすめの記事: CSS 疑似クラスの右下隅をクリックすると、選択を示すチェックマークが表示されます...
目次vimプラグインマネージャーをインストールするプラグインデモを追加プラグインを削除するには: v...
このソリューションの利点はシンプルさと使いやすさですが、欠点はダウンタイムが長くなることです。 した...
CSS は、スクロールを許可しながらスクロール バーを非表示にするために Overflow を設定し...
MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キー制約...
この記事では、MySQL の自動作成時刻と変更時刻を設定する方法について説明します。ご参考までに、詳...
var() の紹介と使用法詳細 (MDN) IEは無効ですが、他の主流のブラウザは有効ですvar()...
目次同じ名前の名前空間をマージする名前空間とその他の種類のマージ同じ名前の名前空間とクラスをマージす...
1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...
Keepalived のインストール: cd <keepalived_sourcecode_p...
1. CSS その他のアイコンアイコンを作成するには 3 つの方法があります。写真css (小さな矢...
目次はじめにNginx Dockerファイル新しい会議もっと参考文献はじめに最近、アプリケーションの...