Wie entferne ich alle Ereignis-Listener aus einem DOM-Element?
Oct 25, 2024 am 02:30 AMEreignis-Listener aus einem DOM-Element entfernen
Frage:
Ist es möglich, alle an ein DOM-Element angehängten Ereignis-Listener zu entfernen? DOM-Element, z. B. ein div?
Antwort:
Wenn Sie Ihre Frage verstehen, gibt es je nach Ihren Anforderungen mehrere Möglichkeiten, dies zu erreichen.
Entfernen aller Event-Handler
Um alle Event-Handler zu entfernen, unabhängig vom Typ, können Sie das Element klonen und durch den Klon ersetzen.
var clone = element.cloneNode(true);
Hinweis: Beim Klonen bleiben Attribute und untergeordnete Elemente erhalten, jedoch keine DOM-Eigenschaftsänderungen.
Entfernen bestimmter Ereignistypen
Anonyme Ereignishandler
Wenn Sie anonyme Ereignishandler hinzugefügt haben (funktionell gleichbedeutend mit der Übergabe einer Funktion als Rückruf an addEventListener), tritt ein Problem mit RemoveEventListener auf. Dies liegt daran, dass anonyme Funktionen bei jedem Aufruf ein neues Objekt erstellen, sodass es unmöglich ist, sie gezielt zu entfernen.
Lösungen:
- Anstatt ein zurückzugeben Funktion aus einer Event-Handler-Funktion, übergeben Sie die Funktion direkt an addEventListener.
- Erstellen Sie eine Wrapper-Funktion für addEventListener, die einen Verweis auf die zurückgegebene Funktion speichert. Dies erfordert eine separate Funktion, „removeAllEvents“, um die Ereignis-Listener zu entfernen.
Nicht-anonyme Ereignishandler
Wenn Ihre Ereignis-Handler nicht anonym sind, Sie kann „removeEventListener“ wie erwartet verwenden. Sie müssen jedoch sicherstellen, dass Sie denselben Objektverweis an „removeEventListener“ übergeben, den Sie zum Hinzufügen des Listeners verwendet haben.
Beispiel:
function eventHandler() {} div.addEventListener('click', eventHandler); ... div.removeEventListener('click', eventHandler);
Bedenken Sie das Wenn Ihr Code häufig Elemente erstellt und entfernt, müssen Sie möglicherweise die in der Event-Handling-Wrapper-Funktion (_eventHandlers im bereitgestellten Beispiel) gespeicherten Referenzen verwalten, um Speicherlecks zu vermeiden.
Das obige ist der detaillierte Inhalt vonWie entferne ich alle Ereignis-Listener aus einem DOM-Element?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Ersetzen Sie Stringzeichen in JavaScript

Benutzerdefinierte Google -Search -API -Setup -Tutorial

8 atemberaubende JQuery -Seiten -Layout -Plugins

Erstellen Sie Ihre eigenen AJAX -Webanwendungen

10 JavaScript & JQuery MVC -Tutorials
