JavaScript ですべてのイベント リスナーを削除する

Shraddha Paghdar 2023年10月12日
JavaScript ですべてのイベント リスナーを削除する

今日の投稿では、JavaScript ですべてのイベント リスナーを削除する方法について説明します。

JavaScript ですべてのイベント リスナーを削除する

EventTarget インターフェイスの addEventListener() メソッドは、指定されたイベントがターゲットに配信されるたびに呼び出される関数を構成します。

addEventListener() メソッドは、EventListener を実装する関数またはオブジェクトを、呼び出された EventTarget で指定されたイベント タイプのイベント リスナーのリストに追加することによって機能します。

関数またはオブジェクトがそのターゲットのイベント リスナーのリストに既にある場合、その関数またはオブジェクトは 2 回目は追加されません。

EventTarget インターフェイスの removeEventListener() メソッドは、以前に EventTarget.addEventListener() を使用してターゲットから登録されたイベント リスナーを削除します。

現在 EventTarget に登録されている EventListener を識別しない引数で removeEventListener() を呼び出しても効果はありません。

ターゲット上の別のリスナーがイベントを処理している間に、EventListenerEventTarget から削除された場合、イベントは送出されません。 ただし、再配置することはできます。

特定の要素に対して 1つまたは 2つのリスナーのみが登録されている場合、removeEventListener の呼び出しは簡単です。 10 を超えるリスナーが登録されていて、すべてのイベント リスナーを削除したい場合はどうなりますか。

努力が必要です。 これを克服するために、この面倒な操作を実行する別の方法を学びます。

以下の例を見てみましょう。

<div>
<button id="grt-btn">Hello World!</button>
<button onclick="removeListeners()">Remove listeners</button>
</div>
document.getElementById('grt-btn').addEventListener(
    'click', () => {console.log('firstClick')}, false);
document.getElementById('grt-btn').addEventListener(
    'blur', () => {console.log('Blur event')}, false);
document.getElementById('grt-btn').addEventListener(
    'focus', () => {console.log('focus event')}, false);

function removeListeners() {
  const oldBtnElement = document.getElementById('grt-btn');
  const newBtnElement = oldBtnElement.cloneNode(true);
  oldBtnElement.parentNode.replaceChild(newBtnElement, oldBtnElement);
  console.log('Removed all listners')
}

上記の例では、2つのボタンを定義しています。 最初のボタンは、リスナーをアタッチするボタンです。

2 番目のボタンは、最初のボタンからリスナーを削除するボタンです。

3つのイベント リスナーを定義しました。 Hello World ボタンをクリックするとすぐに、focus および click イベントがトリガーされます。 別のタブに移動してみてください。 blur イベントをトリガーします。

最後に、Remove listenersボタンをクリックすると、Hello Worldボタンが複製されます。 最後のステップは、div 要素の子ノードを cloneNode に置き換えることです。

これにより、以前にボタンに関連付けられていたすべてのイベント リスナーが自動的に削除されます。

Hello World ボタンをもう一度クリックしようとしても、イベントはトリガーされません。

出力:

"focus event"
"firstClick"
"Blur event"
"focus event"
"Blur event"
"Removed all listeners"

デモはこちら

Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn

関連記事 - JavaScript Event