1. イベントバブリング: JavaScript イベント伝播のプロセスでは、要素でイベントがトリガーされると、そのイベントはドキュメントまで段階的に先行要素に伝播し、一部のブラウザではウィンドウに到達することがあります。すべてのイベントにバブリングがあるわけではありません。例: 2. イベント委任: イベント キャプチャは、イベント バブリングと正反対です。イベントが要素をトリガーするまで、最上位の祖先要素から開始されます。 js イベント キャプチャは通常、DOM2 イベント モデル
3 番目のパラメータはデフォルトで false に設定されており、イベントがバブリング フェーズでトリガーされることを示します。true に設定すると、キャプチャ フェーズでトリガーされます。一般に、イベント キャプチャは私たちの作業ではほとんど使用されないようです。しかし、まだ理解する必要がある <div id="ボックス"> <div id="middle"> <div id="内部"></div> </div> </div> <スクリプト> //イベントキャプチャ window.onload=function(){ box = document.getElementById("box"); とします。 middle = document.getElementById("middle"); とします。 inner を document.getElementById("inner"); とします。 box.addEventListener("click",function(){console.log("box")},true); middle.addEventListener("click",function(){console.log("middle")},true); inner.addEventListener("click",function(){console.log("inner")},true); } </スクリプト> innerをクリックすると、コンソールにbox、middle、innerと出力されます。 イベントのバブリングを停止 通常、多数のイベントバブリングイベントが使用されますが、特定の子タグでは親にイベントを渡す必要がない場合があります。このとき、そのイベントのバブリングを防ぐ必要があります。 一般的に、stopPropagation はイベントのバブリングを防ぐために使用されます。IE では、cancelBuble=true が使用されます。stopPropagation もイベント オブジェクト (Event) のメソッドです。その機能は、対象要素のイベントのバブリングを防ぐことですが、デフォルトの動作を防ぐことはできません。 //イベントのバブルを防ぐ let btna = document.getElementById('btn'); btna.onclick=関数(e){ window.event? window.event.cancelBubble = true : e.stopPropagation(); }; 3. イベント委任: イベント委任はイベント プロキシとも呼ばれます。イベント委任ではイベント バブリングを利用します。イベント ハンドラーを 1 つだけ指定することで、特定のタイプのすべてのイベントを管理できます。 利点: DOM 操作を減らすと、Web ページのパフォーマンスが向上します。ページの親要素と多くの子要素が同じイベントを操作する必要がある場合、各要素にイベントをバインドすることはできません。 <ul id="getNum"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> </ul> <スクリプト> ptclick = document.getElementById('getNum'); とします。 lilist = ptclick.querySelectorAll('li') とします。 for(let i=0;i<lilist.length;i++){ lilist[i].index = i; }; ptclick.onclick = 関数(e){ var e = e || window.event; var ターゲット = e.target || e.srcElement; console.log(e.target.index); }; </スクリプト> 要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: HTMLページでよく使われるいくつかの小さなメソッド
目次1. ヘルプコマンド2. ミラーコマンド3. コンテナコマンド1. ヘルプコマンド1. 現在のD...
まず、テーブルを分割する必要がある理由について説明します。データシートが数百万に達すると、1 回のク...
目次序文1. ファントムリーディングとは何ですか? 2. ファントムリーディングの問題点は何ですか?...
目次1. クラス1.1 コンストラクタ() 1.2 ゲッターとセッター1.3 これ1.4 静的プロパ...
環境の準備 Docker環境 MySQL 5.7 (公式イメージはmysql8をサポートしていません...
1.backup.shスクリプトファイルを作成する #!/bin/sh ソースフォルダ=/データ ...
1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...
この記事では、ドメイン名の書き換えとワイルドカードドメイン名の解決を行うための Nginx の設定方...
序文CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケ...
カーソルカーソルは、結果セット内のデータを表示または処理するために使用される方法です。カーソルを使用...
この記事では、参考までに、Vue の具体的なコードで簡単な計算機を実装する方法を紹介します。具体的な...
1つ。まず、アイデアとしてパッケージ化する必要があります。私はSpringbootフレームワークプロ...
Zabbix 導入ドキュメントzabbix導入後zabbixエージェントの操作1. MySQLを監視...
自宅のルーターが300Mの帯域幅を80Mに強制的に減らしたため、3205Uソフトルーターを購入しまし...
Web 標準について議論するときに必ず話題になるのは、構造とプレゼンテーションを分離することの重要性...