Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie entferne ich Ereignis-Listener, die mit der bind()-Methode in JavaScript hinzugefügt wurden?

Mary-Kate Olsen
Freigeben: 2024-10-25 08:21:28
Original
865 Leute haben es durchsucht

How to Remove Event Listeners Added with the bind() Method in JavaScript?

Mit Bind() hinzugefügte Ereignis-Listener entfernen

Frage:

Wie können wir in JavaScript Ereignis-Listener effektiv entfernen? mit der bind()-Methode hinzugefügt?

Einführung:

Mit der bind()-Methode können Sie eine neue Funktion mit einem angegebenen Kontext erstellen und das Schlüsselwort this daran binden ein bestimmtes Objekt. Dies wird häufig verwendet, um sicherzustellen, dass von Ereignis-Listenern aufgerufene Methoden Zugriff auf den richtigen Kontext haben.

Beispiel:

Stellen Sie sich das folgende Szenario vor:

(function () {
    // MyClass constructor
    MyClass = function () {
        this.myButton = document.getElementById("myButtonID");
        this.myButton.addEventListener(
            "click",
            this.clickListener.bind(this)
        );
    };

    MyClass.prototype.clickListener = function (event) {
        console.log(this); // Should be MyClass
    };

    // Method to disable the button
    MyClass.prototype.disableButton = function () {
        // Remove the event listener
        this.myButton.removeEventListener(
            "click",
            this.clickListener_________// Placeholder for missing argument
        );
    };
})();
Nach dem Login kopieren

Diskussion:

Eine mögliche Lösung besteht darin, jeden mit bind() hinzugefügten Listener im Auge zu behalten, aber dieser Ansatz ist umständlich und fehleranfällig.

Optimale Lösung:

Eine effizientere Lösung besteht darin, zu erkennen, dass die bind()-Methode eine neue Funktionsreferenz erstellt. Um den Listener zu entfernen, müssen wir daher die Referenz einer Variablen zuweisen:

const clickListenerBound = this.clickListener.bind(this);
this.myButton.addEventListener("click", clickListenerBound);
Nach dem Login kopieren

Dann beim Deaktivieren der Schaltfläche:

this.myButton.removeEventListener("click", clickListenerBound);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie entferne ich Ereignis-Listener, die mit der bind()-Methode in JavaScript hinzugefügt wurden?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!