Pregunta

Tengo algunos <tr> elementos en mi página con un click() evento adjunto a una imagen que se encuentra dentro de cada uno de ellos.Puedo usar este código

$(this).clone(true).appendTo("table#foo");

para hacer lo siguiente:

  • copia de los <tr>s en una tabla diferente
  • preservar los eventos de clic en las imágenes dentro de la <tr>s (debido a la true argumento)

Todo eso funciona bien.Ahora he añadido un jQuery Escuchar eventos a los <tr>s, de modo que el usuario no tiene que apuntar con precisión:él/ella puede hacer clic en cualquier lugar de la <tr> y me puede pasar el clic a la imagen.

Es codificado como este:

$('tr.record').listen('click','td',function(){
  $(this).parent().find("img.clickable").click();
});

El listen() el evento funciona bien en el artículo original, pero en el clonado elemento, el escuchar() evento de falla. La imagen del evento click todavía funciona muy bien.

Aquí es lo que Firebug me dice:

m(this, e.type) is undefined

...y a los que hace referencia la línea 9 de jquery.listen-1.0.3-min.js.

¿Cómo hacer que la escuche() el evento de trabajo en el clonado de los elementos?

Actualización

De forma predeterminada, jQuery no copia los eventos en elementos clonados, pero este plugin está hecho para hacer eso.

Mientras tanto, el autor de la escucha() plugin sugirió una estrategia diferente - véase mi respuesta a continuación.

¿Fue útil?

Solución

Ariel Flesler, creador del plugin listen (), me dio este consejo a través de correo electrónico:

"Creo que esto se puede resolver de otra manera. La idea de Escucha (y delegación de eventos) es evitar realidad toda la copia de eventos para nuevos elementos ".

"Usted simplemente puede hacer:"

$('table#foo').listen('click','td',function(){
 $(this).parent().find("img.clickable").click();
});

"O incluso:" ?

$.listen('click','td',function(){
 $(this).parent().find("img.clickable").click();
});

"El primer ejemplo se usa la tabla como oyente. En el segundo uno, el se utiliza <html> etiqueta. Así que no importa si se agregan nuevos td / tr / tablas. va Todavía trabajar ".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top