Come clonare un jQuery Ascolta evento plug-in?
-
21-08-2019 - |
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
.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. "