バブリングとは何ですか?DOM イベント フローには、イベント キャプチャ ステージ、ターゲット ステージ、イベント バブリング ステージの 3 つのステージがあります。 イベントキャプチャ: 簡単に言えば、マウスがクリックされたり、DOM イベントがトリガーされたりすると、ブラウザはルートノードのイベントを外側から内側に伝播します。つまり、子要素がクリックされた場合、親要素がイベントキャプチャを通じて対応するイベントを登録していれば、親要素にバインドされたイベントが最初にトリガーされます。 イベント バブリング (バブリングとも呼ばれる): イベント キャプチャとは対照的に、イベント バブリングは内部からルート ノードへのイベント伝播です。 DOM 標準イベント フローのトリガー順序は、最初にキャプチャしてからバブリングします。つまり、DOM イベントがトリガーされると、最初にイベントがキャプチャされ、イベント ソースがキャプチャされた後、イベントがイベント伝播を通じてバブリングされます。ブラウザによって実装は異なります。IE10 以下ではキャプチャ イベントがサポートされていないため、イベント キャプチャ ステージが 1 つ少なくなります。IE11、Chrome、Firefox、Safari などのブラウザにはすべてこの機能があります。 addEventListener() メソッドこのメソッドはイベント リスナーを設定し、特定のイベントが発生したときに指定されたパラメータを使用してアクションを実行します。構文は次のとおりです。
パラメータ event は必須であり、クリック、タッチスタートなど、プレフィックス on のないイベントなど、監視対象のイベントを示します。 イベントがトリガーされた後に呼び出される関数を示す関数パラメータも必須です。これは外部で定義された関数または匿名関数にすることができます。 パラメーター useCapture はオプションです。イベントがバブリングかキャプチャーかを示すために、true または false を入力できます。true はキャプチャーを意味し、デフォルトの false はバブリングを意味します。 イベントリスナーを削除する addEventListener() によって追加されたイベント リスナーを削除する場合は、removeEventListener() を使用する必要があります。構文は次のとおりです。
パラメータはaddEventListener()と同じです。 互換性 IE 8 以前、および Opera 7.0 以前では、addEventListener() メソッドと removeEventListener() メソッドはサポートされていません。代わりに次のメソッドを使用します。 イベントを追加します:
イベントを削除:
互換性の問題は、次の方法で解決できます。 div1.addEventListener の場合 { div1.addEventListener('click', 関数() { console.log("サポート") }); } そうでない場合 (div1.attachEvent) { div1.attachEvent('onclick', 関数() { console.log("サポートされていません") }); } バブリングとキャプチャーの具体的な違い html <div id="div1"> <div id="div2"></div> </div> JS <スクリプト> var div1 = document.getElementById("div1"); div2 要素を取得します。 div1.addEventListener('click',function(){ console.log("div1--キャプチャフェーズ") }、真実); div2.addEventListener('click',function(){ console.log("div2--キャプチャフェーズ") }、真実); div1.addEventListener('click',function(){ console.log("div1--バブルステージ") }); div2.addEventListener('click',function(){ console.log("div2--バブルステージ") }); </スクリプト> 出力結果(div2をクリックしたときの実行結果) 解決 関数stopBubble(e) { e && e.stopPropagation の場合 { e.stopPropagation(); //W3CのstopPropagation()メソッドをサポートします } else { window.event.cancelBubble = true; // それ以外の場合は、IE のメソッドを使用してイベントのバブリングをキャンセルする必要があります} } 要約するJavaScript のイベント バブリング メカニズムに関するこの記事はこれで終わりです。JavaScript イベント バブリングに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Linux ログ内のキーワードとその前後の情報を検索する方法の例
>>: CentOS7 に MySQL データベースをインストールしてデバッグする詳細な手順 [例]
####システム内の入出力の管理#### 1. システムの入力と出力のリダイレクトを理解する入力リダ...
QQtabBar の BEMまず、BEMとはどういう意味でしょうか? BEM は、ブロック、要素、修...
目次Vue2 ライティングVue3プラグインのバージョンの記述Vue3 動的コンポーネントの記述書き...
体の部位: <button>ライトのオン/オフを切り替える</button>...
序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...
実施原則メイングラフィックは、背景と前景の 2 つの要素で構成されています。次のサンプルコードでは、...
目次要件:実装手順:この記事では主に以下について説明します: カスタムツリーコントロール<el...
目次1. HTTP範囲リクエスト1.1 範囲構文2. 大きなファイルをダウンロードする方法2.1 補...
その特性は次のとおりです。方向アクティブな字幕のスクロール方向を設定するコードは次のとおりです。 &...
最新の HTML 標準には、レイアウトを計算するために使用できる calc CSS 式があります。し...
序文binlog は、MySQL のすべての追加、削除、および変更ステートメントを記録するバイナリ ...
今日は、CSS を使用してアニメーションの再生と一時停止を制御する非常に簡単なトリックを紹介します。...
1. JDKをインストールする1.1 現在の仮想マシン環境にJDKがあるかどうかを確認する rpm ...
Linux に Node.js をインストールする方法は 2 つあります。1 つは簡単で、解凍して使...
<br />Web ページをデザインするときには、いつも不快なことに遭遇します。最も一般...