Pregunta ¿Cómo copiar un nodo DOM con escuchas de eventos?


Lo intenté

node.cloneNode(true); // deep copy

No parece copiar los oyentes del evento que agregué usando node.addEventListener("click", someFunc);.

Usamos la biblioteca de Dojo.


32
2018-03-14 11:48


origen


Respuestas:


cloneNode() no copia los oyentes del evento. De hecho, no hay forma de contactar a los oyentes del evento a través del DOM una vez que han sido conectados, por lo que sus opciones son:

  • Agregue todos los detectores de eventos manualmente a su nodo clonado
  • Refactorice su código para usar la delegación de eventos para que todos los controladores de eventos estén conectados a un nodo que contenga tanto el original como el clon
  • Use una función de envoltura alrededor Node.addEventListener() para realizar un seguimiento de los oyentes añadidos a cada nodo. Así es como jQuery clone() método es capaz de copiar un nodo con sus oyentes de eventos, por ejemplo.

47
2018-03-14 14:12