Heim > Web-Frontend > js-Tutorial > Warum funktioniert mein JavaScript-RemoveEventListener nicht?

Warum funktioniert mein JavaScript-RemoveEventListener nicht?

Linda Hamilton
Freigeben: 2024-11-02 17:04:03
Original
879 Leute haben es durchsucht

Why Isn't My JavaScript removeEventListener Working?

Javascript „removeEventListener“ funktioniert nicht

Beim Versuch, Ereignis-Listener zu einem Element in Javascript hinzuzufügen und zu entfernen, funktioniert die Funktion „removeEventListener“ möglicherweise nicht wie erwartet . Dieses Problem tritt auf, wenn die anonyme Funktion, die als zweites Argument für „removeEventListener“ bereitgestellt wird, nicht dieselbe Funktionsreferenz ist, die ursprünglich dem „addEventListener“ zugewiesen wurde.

Verstehen des Problems

In Mit dem bereitgestellten Code werden die Ereignis-Listener mithilfe anonymer Funktionen angehängt und entfernt:

area.addEventListener('click', function(event) { ... }, true);
area.removeEventListener('click', function(event) { ... }, true);
Nach dem Login kopieren

Diese anonymen Funktionen sind jedoch völlig unterschiedliche Objekte. Auch wenn sie möglicherweise dieselben Aufgaben ausführen, handelt es sich nicht um dieselbe Referenz.

Lösung

Um einen Ereignis-Listener ordnungsgemäß zu entfernen, müssen Sie dieselbe Funktionsreferenz bereitstellen wurde verwendet, um den Listener hinzuzufügen. Definieren Sie eine benannte Funktion außerhalb der Aufrufe „addEventListener“ und „removeEventListener“:

function foo(event) {
  app.addSpot(event.clientX, event.clientY);
  app.addFlag = 1;
}
area.addEventListener('click', foo, true);
area.removeEventListener('click', foo, true);
Nach dem Login kopieren

Auf diese Weise erkennt die Funktion „removeEventListener“ die ursprünglich angehängte Funktionsreferenz und trennt den Ereignis-Listener erfolgreich.

Das obige ist der detaillierte Inhalt vonWarum funktioniert mein JavaScript-RemoveEventListener nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage