Domanda

Ho alcuni <tr> elementi sulla mia pagina con un evento click() collegato a un'immagine che si trova all'interno di ciascuno di essi. Io uso questo codice

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

per effettuare le seguenti operazioni:

  • copiare i true s in una tabella diversa
  • preservare gli eventi click sulle immagini all'interno del <=> s (a causa del <=> argomento)

Tutto questo funziona benissimo. Ora ho aggiunto una jQuery Ascolta evento per quei <=> s, in modo che un utente doesn 't devono mirare precisamente:. lui / lei può cliccare in qualsiasi punto della <=> e posso passare il clic l'immagine

E 'codificato in questo modo:

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

L'evento listen () funziona bene su l'elemento originale, ma sulla voce clonata, l'ascolto () evento non riesce. del immagine evento click funziona ancora bene.

Ecco cosa Firebug mi dice:

m(this, e.type) is undefined

... e fa riferimento la linea 9 della jquery.listen-1.0.3-min.js.

Come posso fare il lavoro evento listen () sugli elementi clonati?

Aggiornamento

Per impostazione predefinita, jQuery non copia gli eventi su elementi clonati, ma questo plugin è fatto per farlo.

Nel frattempo, l'autore del plugin ascoltare () ha suggerito una strategia diversa - vedere la mia risposta qui sotto

.
È stato utile?

Soluzione

Ariel Flesler, creatore del plugin ascolto (), mi ha dato questo consiglio via e-mail:

"Penso che questo può essere risolto in un altro modo. L'idea di Listen (e delegazione evento) è quello di evitare in realtà tutta la copia di eventi per i nuovi elementi ".

"Si potrebbe semplicemente fare:"

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

"O anche:"

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

"Il primo esempio sarà utilizzare la tabella come ascoltatore. Nel 2 ° uno, il <html> tag viene utilizzato. Quindi, non importa se si aggiungono nuovi TD / TR / tabelle. Sara ancora lavorare. "

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top