ホームページ  >  記事  >  ウェブフロントエンド  >  Vanilla JavaScript でイベント委任を効果的に実装するにはどうすればよいですか?

Vanilla JavaScript でイベント委任を効果的に実装するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-24 08:25:10190ブラウズ

How Can I Effectively Implement Event Delegation in Vanilla JavaScript?

バニラ JavaScript でのイベント委任: 総合ガイド

バニラ JavaScript でイベント委任を実現すると、イベント リスナーを処理する効率的で保守可能な方法が提供されます。組み込みプロトタイプの変更を伴う jQuery のイベント委任とは異なり、バニラ JavaScript は、「.closest()」によるイベント委任の使用を通じて、より堅牢なアプローチを提供します。

jQuery イベント委任をバニラ JavaScript に変換する

jQuery を翻訳するには例:

$('#main').on('click', '.focused', function(){
    settingsPanel();
});

バニラ JavaScript では、次を使用します:

document.querySelector('#main').addEventListener('click', (e) => {
  if (e.target.closest('.focused')) {
    settingsPanel();
  }
});

「.closest()」メソッドは、クリックされた要素に「.focused」と一致する親要素があるかどうかを確認します。 'セレクター。存在する場合、'settingsPanel()' 関数を呼び出します。

複雑なイベント チェーンの最適化

パフォーマンスを向上させるには、特にネストされた要素を扱う場合、早期リターン:

document.querySelector('#main').addEventListener('click', (e) => {
  if (!e.target.closest('.focused')) {
    return;
  }
  // code of settingsPanel here, if it isn't too long
});

このアプローチは、'.focused' セレクターが使用されている場合に不要なコードの実行を防ぎます。

ライブ デモンストレーション

次のコード スニペットは、'.closest()' でバニラ JavaScript のイベント委任を使用する方法を示しています。

document.querySelector('#outer').addEventListener('click', (e) => {
  if (!e.target.closest('#inner')) {
    return;
  }
  console.log('vanilla');
});

$('#outer').on('click', '#inner', () => {
  console.log('jQuery');
});

この例では、「#inner」要素をクリックすると「vanilla」がコンソールに記録されます。バニラ JavaScript のイベント委任。

以上がVanilla JavaScript でイベント委任を効果的に実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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