Comment copier un nœud DOM avec des écouteurs d'événements?
J'ai essayé
node.cloneNode(true); // deep copy
Il ne semble pas copier les écouteurs d'événements que j'ai ajoutés en utilisant node.addEventListener("click", someFunc);
.
Nous utilisons la bibliothèque Dojo.
32
demandé sur
Brett DeWoody
2013-03-14 15:48:10
1 réponses
cloneNode()
ne copie pas les écouteurs d'événement. En fait, il n'y a aucun moyen de mettre la main sur les écouteurs d'événements via le DOM une fois qu'ils ont été attachés, donc vos options sont:
- Ajoutez tous les écouteurs d'événements manuellement à votre nœud cloné
- refactorisez votre code pour utiliser la délégation d'événements afin que tous les gestionnaires d'événements soient attachés à un nœud contenant à la fois l'original et le clone
- utilisez une fonction wrapper autour de
Node.addEventListener()
pour garder une trace des écouteurs ajoutés à chaque nœud. C'est de cette façon jQueryclone()
la méthode est capable de copier un nœud avec ses écouteurs d'événements, par exemple.
48
répondu
Tim Down
2013-03-14 14:12:30