ホームページ  >  記事  >  ウェブフロントエンド  >  イベントバブリングとイベントキャプチャの違いと応用

イベントバブリングとイベントキャプチャの違いと応用

WBOY
WBOYオリジナル
2024-01-13 08:07:151239ブラウズ

イベントバブリングとイベントキャプチャの違いと応用

イベント バブリングとイベント キャプチャの違いと用途

イベント バブリングとイベント キャプチャは、HTML DOM でのイベント配信のための 2 つのメカニズムです。 Web アプリケーションを開発する場合、その違いとアプリケーションを理解することは、イベントの動作をより深く理解し、実際のニーズに基づいて適切な配信メカニズムを選択するのに役立ちます。

  1. イベント バブリング
    イベント バブリングとは、要素上のイベントがトリガーされると、DOM ツリーのルート ノードに伝播するまで、レイヤーごとに親要素に伝播することを意味します。つまり、イベントはトリガーされた要素から親要素までバブルアップします。

たとえば、次の HTML コードのボタンがクリックされると、クリック イベントがその親要素 div および body に順番にバブルアップします:

<body>
    <div>
        <button>Click Me</button>
    </div>
</body>

JavaScript では、次の値を使用します。 addEventListener イベント リスナーを登録し、イベントをキャプチャするメソッド。 3 番目のパラメーターを使用して、イベント バブリングまたはイベント キャプチャ配信メカニズムを使用するかどうかを指定します。 3 番目のパラメーターが指定されていないか false に設定されている場合は、イベント バブリング配信メカニズムが使用されます。

以下は、イベント バブリング配信メカニズムを使用したコード例です:

document.querySelector('button').addEventListener('click', function() {
    console.log('Button clicked');
});

document.querySelector('div').addEventListener('click', function() {
    console.log('Div clicked');
});

document.querySelector('body').addEventListener('click', function() {
    console.log('Body clicked');
});

ボタンをクリックすると、「ボタンがクリックされました」、「Div がクリックされました」、「ボディがクリックされました」が出力されます。順番通りに。 。

  1. イベント キャプチャ
    イベント キャプチャとは、要素上のイベントがトリガーされると、トリガーされるまで DOM ツリーのルート ノードから下方向に伝播することを意味します。つまり、イベントは、DOM ツリーのルート ノードから開始して、イベントをトリガーした要素までキャプチャされます。

イベント キャプチャ配信メカニズムを使用する場合は、addEventListener メソッドの 3 番目のパラメーターを true に設定できます。例:

document.querySelector('button').addEventListener('click', function() {
    console.log('Button clicked');
}, true);

document.querySelector('div').addEventListener('click', function() {
    console.log('Div clicked');
}, true);

document.querySelector('body').addEventListener('click', function() {
    console.log('Body clicked');
}, true);

ボタンをクリックすると、「Body clicked」、「Div clicked」、「Button clicked」が順に出力されます。ご覧のとおり、イベントは DOM ツリーのルート ノードから開始してキャプチャされ、イベントがトリガーされる要素に順番に伝播されます。

3. 実践的な応用

イベント バブリングとイベント キャプチャの違いを理解することは、実際の開発でイベント配信の問題にどのように対処するかを決定するのに役立ち、それによってより柔軟なインタラクティブ機能を実現できます。

たとえば、複雑なページに複数のネストされた要素があり、要素の 1 つをクリックしたい場合、その要素のクリック イベントのみがトリガーされます。イベント キャプチャを使用して処理することを選択できます。 。

一方、要素をクリックし、その親要素のクリック イベントもトリガーしたい場合は、イベント バブリング配信メカニズムの使用を選択できます。

同時に、イベント オブジェクトの stopPropagation() メソッドを使用して、イベントのさらなる配信を停止することもできます。たとえば、ボタンがクリックされたときに stopPropagation() メソッドを呼び出すと、イベントが上または下に渡され続けるのを防ぐことができます。

概要:
イベント バブリングとイベント キャプチャは、HTML DOM でのイベント配信のための 2 つのメカニズムです。それらの違いと用途を理解することは、イベント配信の問題をより適切に処理し、より柔軟な対話型機能を実現するのに役立ちます。実際のニーズに応じて適切な配信メカニズムを選択し、イベント オブジェクトのメソッドを組み合わせてイベントの配信を制御します。

以上がイベントバブリングとイベントキャプチャの違いと応用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。