JavaScriptはイベントリスナーをイベント委任にバッチで追加します。詳細なプロセス

JavaScriptはイベントリスナーをイベント委任にバッチで追加します。詳細なプロセス

1. イベント委任とは何ですか?

イベント委譲: イベントバブリングの特性を利用して、子要素に登録すべき処理イベントを親要素に登録します。これにより、子要素がクリックされたときに、それ自身に対応するイベントがないことが判明した場合、親要素が検索され、応答されます。これを行う利点は次のとおりです。

  • DOM 操作を減らし、パフォーマンスを向上させます。
  • サブ要素はいつでも追加でき、追加されたサブ要素には対応する処理イベントが自動的に設定されます。

2. イベント委任の原則

イベント委任は、イベント バブリング原則を使用して実装されます。イベント バブリングとは何ですか?つまり、イベントは最も深いノードから始まり、段階的に上方に伝播します。
例えば、ページ上にdiv>ul>li>aというノードツリーがあり、例えば一番内側のaにクリックイベントを追加すると、このイベントは外側に向かってレイヤーごとに実行され、実行順序はa>li>ul>divです。このような仕組みがあるので、一番外側のdivにクリックイベントを追加すると、内側のul、li、aがクリックイベントを作成すると、一番外側のdivにバブリングされ、すべてトリガーされます。これがイベント委任であり、親に代わってイベントを実行することを委託します。

3. イベント委任の実施

ケースを通じてイベント委任を実装します。
ケース: イベント リスナーをバッチで追加します。 JavaScript を使用して、どの li 要素をクリックすると、どの li 要素の背景が赤くなるかを実現します。

ここに画像の説明を挿入

構造レイヤー + スタイル レイヤー コード:

<スタイル>
    * {
        マージン: 0;
        パディング: 0;
    }
    ul {
        フロート: 左;
        幅: 800ピクセル;
        上マージン: 50px;
    }
    ul li {
        リストスタイル: なし;
        フロート: 左;
        幅: 200ピクセル;
        高さ: 200px;
        境界線: 1px実線 #000;
        右マージン: 20px;
    }
    ul li:最初の子 {
        左マージン: 20px;
    }
</スタイル>
<本文>
	<ul id="リスト">
    	<li>1</li>
    	<li>2</li>
    	<li>3</li>
	</ul>
</本文>

3.1 方法1: ループしてイベントを追加する

イベント委任を使用せず、for ループを使用してクリック イベントを追加すると、メモリ消費量が多くなります。

var oList = document.getElementById('list');
var lis = oList.getElementsByTagName('li');
(var i = 0; i < lis.length; i++) の場合 {
    lis[i].onclick = 関数(){
        this.style.backgroundColor = '赤';
    }
}

3.2 方法2: イベント委任の使用

イベント委任を使用します。

var oList = document.getElementById('list');
oList.onclick = 関数 (e) {
	e.target.style.backgroundColor = '赤';
}

この場合、e.target はユーザーが実際にクリックした要素を表します。

これで、JavaScript を使用してイベント リスナーをイベント委任に一括で追加する詳細なプロセスに関するこの記事は終了です。JavaScript イベント委任に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • js におけるイベントバブリングとイベントキャプチャの簡単な分析
  • JavaScript におけるイベント バブリング メカニズムの詳細な分析
  • JS でのイベント バブリングとイベント キャプチャの概要
  • JSバブリングイベントとイベントキャプチャ例の詳細な説明
  • jsイベント委譲の詳細な説明
  • JavaScript イベントバブリング、イベントキャプチャ、イベント委任の詳細な説明

<<:  Docker ビルド PHP 環境チュートリアル詳細説明

>>:  HTML テーブル マークアップ チュートリアル (16): タイトルの水平方向の配置属性 ALIGN

推薦する

MySQL 8.0.25 のインストールと設定方法のグラフィックチュートリアル

MySQL 8.0.25の最新のダウンロードとインストールのチュートリアルは参考になります。具体的な...

GET POSTの違い

1. Get はサーバーからデータを取得するために使用され、Post はサーバーにデータを渡すために...

MySQL 日付処理関数の例の分析

この記事は主にMySQLの日付処理関数のサンプル分析を紹介します。この記事ではサンプルコードを詳細に...

MySQL における Decimal 型と Float Double 型の違い (詳細説明)

MySQL には、10 進数などの標準データ型だけでなく、float や double などの非標...

Linux の検索ツールの代替となるフレンドリーなツール

find コマンドは、指定されたディレクトリ内のファイルを検索するために使用されます。引数の前の文字...

Nginx はリクエスト接続を統合し、ウェブサイトのアクセス例を高速化します

序文世界最高の Web サーバーの 1 つである Nginx の利点は明らかです。 Nginx がリ...

Linuxはsttyを使用して端末の回線設定を表示および変更します。

Sttty は、Linux で端末設定を変更および印刷するための一般的なコマンドです。 1. パラ...

Mysqlは隣接リスト(隣接リスト)を通じてツリー構造を保存します。

以下の内容では、隣接リストを使用してツリー構造を保存する MYSQL のプロセスとソリューションを紹...

MySQL をインストールした後に調整する必要がある 10 のパフォーマンス設定項目

このブログでは、MySQL データベースをインストールした後に調整することが推奨される 10 のパフ...

MySQLサービスを開くおよび閉じる2つの方法

方法1: cmdコマンドを使用するまず、DOS ウィンドウを開き、スタート、実行、cmd と入力しま...

Dockerはmysqldumpコマンドを使用してプロジェクト内のmysqlデータをバックアップおよびエクスポートします。

mysqldump コマンドはじめに: データベースバックアッププログラム形式: mysqldum...

ccs3に基づくタイムライン実装方法

Web プロジェクトでは、タイムライン コントロールをよく使用します。この記事では、項目ごとに展開で...

vuexサードパーティパッケージを使用してデータの永続性を実装する方法

目的: vuex で管理されている状態データを同時にローカルに保存できるようにします。独自のストレー...

Linux CRM デプロイメント コードの詳細な説明

Linuxの基本設定 Linux環境でpython3をコンパイルしてインストールする 1. Linu...