removeEventListener

Le
WebShaker
Salut j'ai un code dans ce genre

oNewCard.addEventListener('click', function( event )
{
// 100 ligne de code
}, false );


Comment faire pour supprimer le listener ?
je vais quand meme pas appeler
oNewCard.removeEventListener('click', function( event )
{
// 100 ligne de code
}, false );

avec mes 100 lignes de code !!!

Merci
Etienne
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Mickaël Wolff
Le #21667161
Le 01/05/2010 18:29, WebShaker a écrit :
avec mes 100 lignes de code !!!



Ça ne marchera pas car ce ne sera pas le même objet. Le second
paramètre de addEventListener et removeEventListener sont un objet. Et
effectivement, en Javascript, une fonction est un objet.

Tu dois sauvegarder l'objet fonction pour pouvoir le supprimer plus tard.

var callback = function (/* … */) { /* … */ }
o.addEventListener('hop', callback, false) ;
/* … */
o.removeEventListener('hop', callback, false) ;

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
WebShaker
Le #21673071
Le 01/05/2010 19:44, Mickaël Wolff a écrit :
Ça ne marchera pas car ce ne sera pas le même objet. Le second paramètre
de addEventListener et removeEventListener sont un objet. Et
effectivement, en Javascript, une fonction est un objet.



Dans mon cas j'avais surtout besoin que mon evenement ne se déclanche
qu'un seule fois.
j'ai trouvé ca sur internet.

this.removeEventListener('click', arguments.callee, false);

en gros faut mettre ca dans le code de l'event et ca l'auto supprime

ca donne
oNewCard.removeEventListener('click', function( event )
{
// 100 ligne de code
this.removeEventListener('click', arguments.callee, false);
}, false );

et voila mon evenement ne sera executé qu'une seul fois.

Etienne
Mickaël Wolff
Le #21673221
Le 02/05/2010 21:53, WebShaker a écrit :
Le 01/05/2010 19:44, Mickaël Wolff a écrit :
Ça ne marchera pas car ce ne sera pas le même objet. Le second paramètre
de addEventListener et removeEventListener sont un objet. Et
effectivement, en Javascript, une fonction est un objet.



Dans mon cas j'avais surtout besoin que mon evenement ne se déclanche
qu'un seule fois.
j'ai trouvé ca sur internet.

this.removeEventListener('click', arguments.callee, false);

en gros faut mettre ca dans le code de l'event et ca l'auto supprime

ca donne
oNewCard.removeEventListener('click', function( event )
{
// 100 ligne de code
this.removeEventListener('click', arguments.callee, false);
}, false );

et voila mon evenement ne sera executé qu'une seul fois.



Malheureusement, arguments.callee est déconseillé et ne devrait plus
être utilisé. Mais je ne connais pas d'équivalent.

Ceci dit, définir un élément en one shot n'a pas quand' intérêt quand
on fait de la programmation événementielle.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
WebShaker
Le #21673481
Le 02/05/2010 22:28, Mickaël Wolff a écrit :
Malheureusement, arguments.callee est déconseillé et ne devrait plus
être utilisé. Mais je ne connais pas d'équivalent.



Ben dans certain cas si ca peut être utile.
Surtout en HTML5.

je te donne un exemple:
tu décides d'utiliser par exemple l'effet de transition et tu veux faire
quelque chose en fin de transition.
ce quelques chose est exécuté lors du déclenchement de webkitTransitonEnd.
et la tu peut vouloir faire quelque chose de particulier lié uniquement
a cette transition.

voila.
m'enfin j'ai plein d'autre cas !

Etienne
Publicité
Poster une réponse
Anonyme