Entfernen von JavaScript-Ereignis-Listenern innerhalb von Listener-Definitionen
Beim Versuch, einen Ereignis-Listener innerhalb seiner Listener-Definition zu entfernen, können JavaScript-Benutzer auf Schwierigkeiten stoßen die Kontextbindung. In diesem Artikel werden Ansätze zur Behebung dieses Problems und zum effektiven Entfernen von Ereignis-Listenern vorgestellt.
Ansatz 1: Verwendung benannter Funktionen
Anstelle anonymer Funktionen definieren Sie eine benannte Funktion und weisen Sie diese zu an den Ereignis-Listener. Dadurch wird sichergestellt, dass die Funktion später zum Entfernen referenziert werden kann.
var click_count = 0; function myClick(event) { click_count++; if (click_count == 50) { // Remove the event listener canvas.removeEventListener('click', myClick); } } // Add the event listener canvas.addEventListener('click', myClick);
Ansatz 2: Abschluss mit Klickzählervariable
Der Abschluss ermöglicht der Listener-Funktion den Zugriff auf definierte Variablen außerhalb seines Geltungsbereichs. Kapseln Sie in diesem Fall die Klickzählervariable innerhalb der Funktion.
var myClick = (function (click_count) { var handler = function (event) { click_count++; if (click_count == 50) { // Remove the event listener canvas.removeEventListener('click', handler); } }; return handler; })(0); // Add the event listener canvas.addEventListener('click', myClick);
Ansatz 3: Klickzähler als Funktionsargument
Wenn verschiedene Elemente ihre eigenen Klickzähler benötigen , erstellen Sie eine neue Funktion, die den Klickzähler als Argument verwendet.
var myClick = function (click_count) { var handler = function (event) { click_count++; if (click_count == 50) { // Remove the event listener canvas.removeEventListener('click', handler); } }; return handler; }; // Add the event listener canvas.addEventListener('click', myClick(0));
Das obige ist der detaillierte Inhalt vonWie kann man JavaScript-Ereignis-Listener effektiv aus ihren Definitionen entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!