ホームページ  >  に質問  >  本文

DOM イベント委任の定義と説明

<p>誰かが JavaScript のイベント委任とその機能を説明してもらえますか? </p>
P粉754477325P粉754477325448日前422

全員に返信(1)返信します

  • P粉593649715

    P粉5936497152023-08-23 00:01:17

    DOM イベント委任は、各子要素ではなく単一の共通の親要素を通じて UI イベントに応答するメカニズムであり、イベントの「バブル」(イベントの伝播とも呼ばれる) の魔法によって実現されます。

    要素でイベントがトリガーされると、 次のことが起こります :

    イベント バブリングは、ブラウザーでのイベント委任の基礎を提供します。イベント ハンドラーを単一の親要素にバインドできるようになり、その子ノードのいずれかでイベントが発生するたびに、ハンドラーが (その子とともに) 実行されます。 これはイベントの委任です。 これが実際の例です:

    リーリー

    この例では、子 <li> ノードのいずれかをクリックすると、 Click ハンドラー バインディングがなくても、"click!" 警告が表示されます。 <li> に。 onclick="..." を各 <li> にバインドすると、同じ効果が得られます。

    それでは、どのようなメリットがあるのでしょうか?

    DOM 操作を通じて、新しい <li> 項目を上記のリストに動的に追加する必要があるとします。

    リーリー

    イベント委任を使用しない場合は、その兄弟との一貫性を保つために、"onclick" イベント ハンドラーを新しい <li> 要素に再バインドする必要があります。性能も同じです。イベント委任を使用すると、何もする必要はありません。新しい <li> をリストに追加するだけで完了です。

    これは、新しい要素が動的に作成されたり、DOM から削除されたりする、多くの要素にバインドされたイベント ハンドラーを持つ Web アプリケーションに最適です。イベント委任を使用すると、イベント バインディングの数を大幅に削減して共通の親要素に移動でき、要素を動的に作成するコードを、要素をバインドするイベント ハンドラーのロジックから切り離すことができます。

    イベント委任のもう 1 つの利点は、イベント リスナーによって使用される合計メモリ フットプリントが削減されることです (イベント バインディングの数が減少するため)。頻繁にアンロードされる小さなページ (つまり、ユーザーが頻繁に別のページに移動する) の場合、これは大きな影響を及ぼさない可能性があります。しかし、長期間存続するアプリケーションにとっては、それが重要になる可能性があります。要素が DOM から削除されてもまだメモリを占有している (つまり、リークしている) という追跡が非常に困難なケースがいくつかあり、多くの場合、このリークしたメモリはイベント バインディングに関連しています。イベント委任を使用すると、イベント リスナーの「バインド解除」を忘れることを心配することなく、子要素を自由に破棄できます (リスナーは祖先要素上にあるため)。このような種類のメモリ リークは、抑えることができます (完全になくすことはできませんが、それは非常に難しい場合があります。つまり、私はあなたのことを考えています)。

    ここでは、より優れたイベント委任の具体的なコード例をいくつか示します:

    返事
    0
  • キャンセル返事