251 votes

Supprimer tous les écouteurs d'événements d'un type spécifique

Je veux supprimer tous les écouteurs d'événements d'un type spécifique qui ont été ajoutés en utilisant addEventListener(). Toutes les ressources que je consulte disent que vous devez faire ceci :

elem.addEventListener('mousedown', specific_function);
elem.removeEventListener('mousedown', specific_function);

Mais je veux être en mesure de le supprimer sans savoir ce que c'est actuellement, comme ceci :

elem.addEventListener('mousedown', specific_function);
elem.removeEventListener('mousedown');

1voto

Tom Burris Points 173

Vous pourriez également remplacer la méthode 'yourElement.addEventListener()' et utiliser la méthode '.apply()' pour exécuter l'auditeur de la même manière, mais en interceptant la fonction dans le processus. Comme :

    var args = [];
    var orginalAddEvent = yourElement.addEventListener;

    yourElement.addEventListener = function() {
       // console.log(arguments);
       args[args.length] = arguments[0];
       args[args.length] = arguments[1];
       orginalAddEvent.apply(this, arguments);
    };

    function removeListeners() {
       for(var n=0;n<args.length;n+=2) {
           yourElement.removeEventListener(args[n], args[n+1]);
       }
    }

    removeListeners();

Ce script doit être exécuté lors du chargement de la page sinon il pourrait ne pas intercepter tous les écouteurs d'événements.

Assurez-vous de retirer l'appel à 'removeListeners()' avant d'utiliser.

0voto

Sri Harsha Points 33
 var events = [event_1, event_2,event_3]  // vos événements

//faire une boucle for de vos événements et les supprimer tous en une seule instance

 for (let i in events){
    canvas_1.removeEventListener("mousedown", events[i], false)
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X