Maison > interface Web > js tutoriel > Comment supprimer un écouteur d'événement de sa propre définition en JavaScript ?

Comment supprimer un écouteur d'événement de sa propre définition en JavaScript ?

Mary-Kate Olsen
Libérer: 2024-12-05 14:13:11
original
380 Les gens l'ont consulté

How to Remove an Event Listener from Within Its Own Definition in JavaScript?

Suppression des écouteurs d'événements en JavaScript

En JavaScript, les écouteurs d'événements sont couramment utilisés pour répondre aux interactions des utilisateurs. Cependant, il peut y avoir des cas où vous devez supprimer ces écouteurs pour diverses raisons.

Problème :

Vous souhaitez supprimer un écouteur d'événement de la définition du auditeur lui-même. Cependant, les tentatives d'utilisation de « this » dans l'écouteur entraînent des erreurs.

Solution 1 : Fonctions nommées

Pour résoudre ce problème, utilisez des fonctions nommées au lieu de fonctions anonymes. :

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);
Copier après la connexion

Dans cette solution, la variable 'click_count' est définie en dehors du écouteur, assurant sa visibilité au sein de la fonction. De plus, « myClick » est une fonction nommée, qui permet de la supprimer ultérieurement.

Solution 2 : Fermeture

Vous pouvez également utiliser des fermetures pour y parvenir :

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);
Copier après la connexion

Dans cette approche, une fermeture est créée autour de la variable 'click_count'. La fonction « gestionnaire » incrémente le compteur et supprime l'écouteur d'événements si nécessaire.

Solution 3 : Compteurs individuels

Si chaque élément nécessite son propre compteur, utilisez cette solution :

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 with a unique click counter for each element
canvas.addEventListener('click', myClick(0));
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal