Foros del Web » Programando para Internet » Javascript »

Clonar y añadir los mismos eventos

Estas en el tema de Clonar y añadir los mismos eventos en el foro de Javascript en Foros del Web. Hola foreros! Antes de nada... Feliz navidad y próspero año nuevo... bueno mi dudilla, jeje. Hace unas semanas aprendi a clonar elementos con " cloneNode ...
  #1 (permalink)  
Antiguo 28/12/2009, 04:17
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Clonar y añadir los mismos eventos

Hola foreros!

Antes de nada... Feliz navidad y próspero año nuevo... bueno mi dudilla, jeje. Hace unas semanas aprendi a clonar elementos con "cloneNode" funciona muy bien, solo veo un problema y es que no asigna a los nuevos elementos los eventos que tenian los elementos clonados.

Es decir, yo tengo asignados con getElementsByClass los eventos a los elementos partiendo de una determinada class. El problema es que cuando clono un elemento este no tiene ningun evento asignado...

¿Sabeis alguna solucion?

Edito.... hola de nuevo... he estado mirando y creo que lo que necesito es alguna funcion que copie nodo por nodo insertandolo uno a uno con DOM, pues veo que es como si hubiera hecho un innerhtml... no?

Última edición por salbatore; 28/12/2009 a las 04:28
  #2 (permalink)  
Antiguo 28/12/2009, 04:39
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Clonar y añadir los mismos eventos

¿Cuando asignas los eventos con getElementsByClass lo haces con una función? Si es así creo que puedes solucionarlo fácilmente. Después de clonar los nodos vuelve a invocar la función. En caso de que no la tengas, puedes volver a obtener los elementos con getElementsByClass para asignar de nuevo los eventos.
  #3 (permalink)  
Antiguo 28/12/2009, 05:49
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Respuesta: Clonar y añadir los mismos eventos

Hola de nuevo...

He probado lo que me comentas Osdiwe y nada de nada, jeje... es como si no existiesen. Paso de nuevo la funcion con getElementsByClass para asignar los eventos, pero no encuentra los elementos, jeje.

Me da que voy a tener que hacer una funcion que me cree cada elemento por medio de "createElement". ¿Que pensais?
  #4 (permalink)  
Antiguo 28/12/2009, 11:20
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Respuesta: Clonar y añadir los mismos eventos

Hola de nuevo...

He estado mirando bastante por google y me encuentro que es un problema bastante preguntado pero que nadie da una solucion clara, jeje...

Debe ser un bug o al asi, jeje... asi que si alguien sabe una solucion a clonar elementos y asignar a la vez los eventos del elemento clonado que me de un toque!.... jeje.
  #5 (permalink)  
Antiguo 28/12/2009, 11:54
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Clonar y añadir los mismos eventos

en mi referencia de javascript menciona que cuando se clona elementos con cloneNode, este no clona los eventos asociado al elemento o elementos hijos. lo que no estoy seguro es si no se clonan cuando el evento es agregado con addEventListener, o si es independiente del modelo utilizado.

por tanto, la solucion es volver a registrar el evento. en tu caso, parece que tienes que buscar los elementos por clase. puede que no te este funcionando porque no has agregado el clon al documento o estas invocando la funcion en un contexto donde el clon no esta envuelto.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 01/01/2010, 11:00
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Respuesta: Clonar y añadir los mismos eventos

Hola de nuevo...

No entiendo bien lo que dices zerokilled, jeje... La verdad es que despues de rastrear toda la red, o por lo menos varios dias buscando, creo que no se pueden clonar los elementos y los eventos por medio de cloneNode, de hecho estan plagados varios foros para resolver este problema, jeje.

Tras pensarlo un rato acabo de empezar ha hacer una funcion que clone un elemento y su contenido por medio de DOM, asi que un rollo.

¿Por que nadie conoce ninguna funcion que permita copiar nodos y sus eventos por medio de DOM?
  #7 (permalink)  
Antiguo 01/01/2010, 12:21
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Clonar y añadir los mismos eventos

Cita:
Iniciado por salbatore
¿Por que nadie conoce ninguna funcion que permita copiar nodos y sus eventos por medio de DOM?
Cita:
Iniciado por Javascript: The Definitive Guide 4th edition
When an Element node is cloned, all of its attributes are also cloned. Note, however, that EventListener functions registered on a node are not cloned.
la traduccion, "cuando un nodo es clonado, todos sus atributos tambien son clonados. notese que funciones EventListener registrados en el nodo no son clonados." como veras, no es que nadie sabe de alguna funcion, es que simplemente el DOM no lo permite mediante cloneNode. ahora bien, fijate que aqui dice eventos registrados por EventListener (o sea, addEventListener), intentalo con atributos. sino, tienes que crearte una funcion que ademas de clonar tambien registre el evento en el nuevo clon.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #8 (permalink)  
Antiguo 02/01/2010, 14:14
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Respuesta: Clonar y añadir los mismos eventos

loading...........

Para aplicar un clonado de eventos debes crear un patron por el cual puedas verificar el comportamiento de un objeto DOM registrado, de esa forma puede mover/copiar/eliminar sus EventListeners a gusto y gana. busca en google "observer pattern" ( http://es.wikipedia.org/wiki/Observe...dise%C3%B1o%29 ).

PD: no seas tan fácil y simplemente querer una "funcioncita" que te copie los eventos, ah... y "no es bug".

saludos.


connection closed.
__________________

Maborak Technologies
  #9 (permalink)  
Antiguo 03/01/2010, 18:29
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 1 mes
Puntos: 19
Respuesta: Clonar y añadir los mismos eventos

Hola de nuevo!...

Mañana mismo me pongo a mirar lo que me comentais... jeje. Muchas gracias... cuando solucione todos mis problemas con los eventos posteo os comento!...

Muchas gracias a todos!.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:25.