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
Mary-Kate Olsenoriginal
2024-12-05 14:13:11310parcourir

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);

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);

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));

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