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:
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!