Maison >interface Web >js tutoriel >Comment supprimer un écouteur d'événement de sa propre définition en 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!