JavaScript Alle Ereignis-Listener entfernen

Shraddha Paghdar 12 Oktober 2023
JavaScript Alle Ereignis-Listener entfernen

Im heutigen Beitrag erfahren Sie, wie Sie alle Ereignis-Listener in JavaScript entfernen.

Entfernen Sie alle Ereignis-Listener in JavaScript

Die Methode addEventListener() der Schnittstelle EventTarget konfiguriert eine Funktion, die immer dann aufgerufen wird, wenn das angegebene Ereignis an das Ziel geliefert wird.

Die Methode addEventListener() funktioniert durch Hinzufügen einer Funktion oder eines Objekts, das den EventListener implementiert, zur Liste der Ereignis-Listener für den im EventTarget angegebenen Ereignistyp, für den sie aufgerufen wird.

Wenn sich die Funktion oder das Objekt bereits in der Liste der Ereignis-Listener für dieses Ziel befindet, wird die Funktion oder das Objekt kein zweites Mal hinzugefügt.

Die Methode removeEventListener() der Schnittstelle EventTarget entfernt einen Ereignis-Listener, der zuvor mithilfe von EventTarget.addEventListener() aus dem Ziel registriert wurde.

Der Aufruf von removeEventListener() mit Argumenten, die keinen aktuell im EventTarget registrierten EventListener identifizieren, hat keine Wirkung.

Das Ereignis wird nicht ausgelöst, wenn ein EventListener von einem EventTarget entfernt wird, während ein anderer Listener auf dem Ziel ein Ereignis verarbeitet. Es kann jedoch neu positioniert werden.

Der Aufruf von removeEventListener ist einfach, wenn nur ein oder zwei Listener für bestimmte Elemente registriert sind. Was ist, wenn mehr als 10 Listener registriert sind und Sie alle Ereignis-Listener entfernen möchten?

Es wird Mühe kosten; Wir werden eine andere Methode lernen, um diese mühsame Operation durchzuführen, um dies zu überwinden.

Schauen wir uns das Beispiel unten an.

<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')
}

Im obigen Beispiel haben wir 2 Schaltflächen definiert. Die erste Schaltfläche ist diejenige, die Zuhörer damit verbindet.

Die zweite Schaltfläche entfernt Zuhörer von der ersten Schaltfläche.

Wir haben drei Ereignis-Listener definiert; Sobald Sie auf die Schaltfläche Hello World klicken, werden die Ereignisse focus und click ausgelöst. Versuchen Sie, zu einem anderen Tab zu navigieren; es löst das blur-Ereignis aus.

Klicken Sie schließlich auf die Schaltfläche Zuhörer entfernen, wodurch die Schaltfläche Hello World geklont wird. Der letzte Schritt besteht darin, den untergeordneten Knoten des Elements div durch cloneNode zu ersetzen.

Dadurch werden automatisch alle zuvor mit der Schaltfläche verknüpften Ereignis-Listener entfernt.

Wenn Sie erneut versuchen, auf die Schaltfläche Hello World zu klicken, werden keine Ereignisse ausgelöst.

Ausgang:

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

Demo hier

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

Verwandter Artikel - JavaScript Event