1. ホーム
  2. ジャバスクリプト

[解決済み】特定のタイプのイベントリスナーをすべて削除する

2022-04-11 05:56:08

質問

を使用して追加された、特定のタイプのイベントリスナーをすべて削除したい。 addEventListener() . 私が見ているすべてのリソースは、あなたがこれを行う必要があると言っています。

elem.addEventListener('mousedown',specific_function);
elem.removeEventListener('mousedown',specific_function);

でも、このように現状を把握せずにクリアできるようにしたいのです。

elem.addEventListener('mousedown',specific_function);
elem.removeEventListener('mousedown');

解決方法は?

をインターセプトしないと不可能です。 addEventListener を呼び出してリスナーを追跡するか、残念ながらそのような機能を持つライブラリを使ってください。リスナーコレクションにアクセスできればよかったのですが の機能は実装されていませんでした。 .

最も近い方法は、要素のクローンを作成してすべてのリスナーを削除することですが、これではリスナーコレクションをクローンすることはできません。

注:これは、要素の子要素のリスナーも削除します。

var el = document.getElementById('el-id'),
    elClone = el.cloneNode(true);

el.parentNode.replaceChild(elClone, el);