Enlever l'écouteur d'événement en JavaScript
- Je ajouter un écouteur d'événement à un élément:
/* sitepoint.com/javascript-this-event-handlers */
function AttachEvent(element, type, handler){
if (element.addEventListener){
element.addEventListener(type, handler, false);
}else{
element.attachEvent("on"+type, handler);
}
}
window.addEventListener("load", function() {
var els = getElementsByClassName('name', 'img');
var elsnum = els.length;
if(elsnum) //found
{
var i = 0;
for(i=0; i < elsnum; i++)
{
var the_els = els[i];
AttachEvent(the_els, "click", myfunction);
}
}
}, false);
Plus tard dans myfunction
, je veux supprimer le gestionnaire de nouveau, pour empêcher la duplication des clics:
function myfunction(e) {
e = e || window.event;
var target = e.target || e.srcElement;
//more code
//...
//remove click handler
target.removeEventListener('click', e, false);
//more code
//...
}
L'écouteur d'événement n'est pas supprimé, bien que. Quand je clique sur un des éléments, le code de myfunction
est exécutée à nouveau. Comment puis-je enlever l'écouteur d'événement pour empêcher l'élément cliqué d'être cliqué de nouveau?
PS: je n'utilise pas jQuery.
Si vous voulez une mise en œuvre facilitée, lire ma réponse en bas sur le fond. 😉
OriginalL'auteur reggie | 2012-01-12
Vous devez vous connecter pour publier un commentaire.
Je crois que vous y êtes presque, mais vous devez passer les auditeur à
removeEventListener
, et non l'événement lui-même. Donc, essayez:Vous êtes les bienvenus! N'oublie pas de poignée c'est à dire avec
element.detachEvent
. En cas de doute, prendre un coup d'oeil un quirksmode lien @John posté, c'est un excellent article sur ce sujet.OriginalL'auteur bfavaretto
Utilisation
element.removeEventListener(type, listener, useCapture)
N'oubliez pas de l'utiliser sur le même élément, et de lui donner exactement les mêmes paramètres que pour l'ajout d'.
Un excellent moyen de code ce serait de faire une fonction qui stocke l'auditeur de détails dans une variable, imitant la façon dont
setTimeout()
œuvres, par exemple, et en ajoutant que pour l'élément prototype. Voici un exemple de fonction.Qui va ajouter une méthode à l'ensemble du HTML nœuds qui déjà peut accepter événement listners, et vous permettent de faire cela.
OriginalL'auteur TERMtm
http://www.quirksmode.org/js/events_advanced.html
Pour supprimer un gestionnaire d'événement, utilisez la
removeEventListener()
méthode.Voir aussi http://help.dottoro.com/ljahxbsx.php
object.removeEventListener (eventName, listener, useCapture);
listener
- Requis. Référence à la fonction de gestionnaire d'événement à supprimer. Vous avez besoin de transmettre ce que l'auditeur que vous souhaitez supprimer.OriginalL'auteur Luke Shaheen