ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript のremoveEventListener が機能しないのはなぜですか?

JavaScript のremoveEventListener が機能しないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 17:04:03765ブラウズ

Why Isn't My JavaScript removeEventListener Working?

JavaScript のremoveEventListener が動作しない

JavaScript で要素にイベント リスナーを追加および削除しようとすると、removeEventListener 関数が期待どおりに動作しない場合があります。この問題は、removeEventListener の 2 番目の引数として指定された匿名関数が、addEventListener に最初に割り当てられた関数参照と異なる場合に発生します。

問題の理解

提供されたコードでは、イベント リスナーは匿名関数を使用して接続および削除されます:

area.addEventListener('click', function(event) { ... }, true);
area.removeEventListener('click', function(event) { ... }, true);

ただし、これらの匿名関数は完全に異なるオブジェクトです。同じタスクを実行する場合でも、それらは同じ参照ではありません。

解決策

イベント リスナーを正しく削除するには、同じ関数参照を提供する必要があります。リスナーを追加するために使用されました。 addEventListener の外側で名前付き関数を定義し、removeEventListener 呼び出しを行います。

function foo(event) {
  app.addSpot(event.clientX, event.clientY);
  app.addFlag = 1;
}
area.addEventListener('click', foo, true);
area.removeEventListener('click', foo, true);

これを実行すると、removeEventListener 関数は最初にアタッチされた関数参照を認識し、イベント リスナーを正常にデタッチします。

以上がJavaScript のremoveEventListener が機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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