Heim >Web-Frontend >js-Tutorial >Wie kann ich JavaScript-Ereignis-Listener aus ihren eigenen Definitionen entfernen?

Wie kann ich JavaScript-Ereignis-Listener aus ihren eigenen Definitionen entfernen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-05 17:58:11811Durchsuche

How Can I Remove JavaScript Event Listeners from Within Their Own Definitions?

JavaScript-Ereignis-Listener innerhalb ihrer Definitionen entfernen

Bei der Arbeit mit Ereignis-Listenern in JavaScript kann es Situationen geben, in denen Sie einen Listener entfernen müssen aus der Definition eines anderen Zuhörers. Diese Situation kann auftreten, wenn eine bestimmte Bedingung erfüllt ist, beispielsweise das Erreichen einer bestimmten Klickanzahl.

Lösung:

Um einen Ereignis-Listener innerhalb seiner eigenen Definition zu entfernen, müssen Sie kann benannte Funktionen nutzen. Anstatt der Methode addEventListener() eine anonyme Funktion zuzuweisen, erstellen Sie eine benannte Funktion und übergeben Sie sie als zweites Argument.

var click_count = 0;

function myClick(event) {
  click_count++;
  if (click_count == 50) {
    canvas.removeEventListener('click', myClick);
  }
}

canvas.addEventListener('click', myClick);

In diesem Beispiel ist myClick eine benannte Funktion, die der Methode addEventListener() zugewiesen ist . Wenn das Klickereignis ausgelöst wird, erhöht die Funktion myClick die Variable click_count. Wenn die Anzahl 50 erreicht, wird der Listener mit „removeEventListener()“ entfernt.

Alternativer Ansatz:

Wenn Sie eine anonyme Funktion verwenden oder den Klickzähler schließen müssen Variable können Sie einen Abschluss erstellen. Ein Abschluss ermöglicht einer inneren Funktion den Zugriff auf Variablen aus ihrem äußeren Bereich, selbst nachdem die Ausführung der äußeren Funktion abgeschlossen ist.

var myClick = (function(click_count) {
  var handler = function(event) {
    click_count++;
    if (click_count == 50) {
      canvas.removeEventListener('click', handler);
    }
  };
  return handler;
})(0);

canvas.addEventListener('click', myClick);

Hier erstellt die myClick-Funktion einen inneren Abschluss, der die Handler-Funktion und die Variable click_count kapselt .

Mehrere Zuhörer:

Wenn Sie mehrere Zuhörer hinzufügen müssen Wenn Sie über eigene Zähler verfügen, können Sie eine Funktion höherer Ordnung erstellen, die eine neue Funktion mit einem eigenen Zähler generiert.

var myClick = function(click_count) {
  var handler = function(event) {
    click_count++;
    if (click_count == 50) {
      canvas.removeEventListener('click', handler);
    }
  };
  return handler;
};

canvas.addEventListener('click', myClick(0));

Das obige ist der detaillierte Inhalt vonWie kann ich JavaScript-Ereignis-Listener aus ihren eigenen Definitionen entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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