Suppression d'un eventlistener [Résolu]

gillespockpock 7 Messages postés vendredi 23 mai 2008Date d'inscription 20 juin 2008 Dernière intervention - 26 mai 2008 à 09:13 - Dernière réponse : cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention
- 26 mai 2008 à 10:09
function bind(objet, methode) {
    //fonction réalisant l'exécution de la méthode dans le contexte de son objet associé
    return function() {
        return methode.apply(objet, arguments);
    }
}



Lorsque j'ajoute l'EventListener comme ceci:

this.dom.addEventListener("click",bind(this,this.placerTable),false);

je ne peux pas le supprimer en faisant:

this.dom.removeEventListener("click",bind(this,this.placerTable),false);
Ca ne marche pas, pourtant l'ajout fonctionne.

Comment le supprimer ?

help
           
           
Afficher la suite 

2 réponses

Répondre au sujet
ralecul 112 Messages postés dimanche 23 mars 2003Date d'inscription 1 août 2008 Dernière intervention - 26 mai 2008 à 10:07
+3
Utile
Salut,

Cet appel :
this.dom.addEventListener("click", bind(this,this.placerTable), false);

est équivalent à :

var _that = this; 
this.dom.addEventListener("click", function() { _that.placerTable(); }, false);

La fonction bind ne fait que construire et retourner une fonction anonyme.
Or removeEventListener a besoin de la "référence" à la callback utilisée.
Et lorsque tu appelles :
this.dom.removeEventListener("click", bind(this,this.placerTable), false);
La fonction bind créé une nouvelle fonction anonyme dont la "réference" est différente de la première...

L'équivalent de removeEventListener est stopObserving avec prototype :
http://www.prototypejs.org/api/event/stopObserving

La solution est donnée sur le site :
var obj = bind(this,this.placerTable);
this.dom.addEventListener("click", obj, false);
this.dom.removeEventListener("click", obj, false);
Ou un truc de ce style...

@+
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ralecul
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 26 mai 2008 à 10:09
0
Utile
Bonjour,

   un truc du style élément.setAttribute('onclick',null)  ?
   mais si ajout de plusieurs fonction avec addEventListener ou attachEvent,
         je ne sais pas trop comment ça marche....
         à approfondir donc...


<hr />
                Cordialement            Bul         [mon Site]     [M'écrire]
Commenter la réponse de cs_bultez

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.