Jquery aggiunge listener di eventi agli elementi aggiunti dynamicmente

Quindi, al momento, capisco che per colbind un listener di eventi a un elemento aggiunto dynamicmente, devi ridefinire il listener dopo aver aggiunto l’elemento. C’è un modo per aggirare questo, quindi non devi eseguire un intero blocco di codice in più?

Usando .on() puoi definire la tua funzione una volta, e verrà eseguita per tutti gli elementi aggiunti dynamicmente.

per esempio

 $('#staticDiv').on('click', 'yourSelector', function() { //do something }); 
 $(document).on('click', 'selector', handler); 

Dove click è un nome di evento e il handler è un gestore di eventi, come riferimento a una funzione o funzione di function() {} anonima function() {}

PS: se conosci il nodo specifico a cui aggiungi elementi dinamici, puoi specificarlo al posto del document .

Generalmente stai generando quegli elementi in modo che nessun listener applicato al caricamento della pagina non sia disponibile. Ho modificato il tuo violino con la soluzione corretta. Fondamentalmente jQuery mantiene l’evento per l’associazione successiva collegandolo all’elemento padre e propagandolo verso il basso all’elemento creato dynamicmente corretto.

 $('#musics').on('change', '#want',function(e) { $(this).closest('.from-group').val(($('#want').is(':checked')) ? "yes" : "no"); var ans=$(this).val(); console.log(($('#want').is(':checked'))); }); 

http://jsfiddle.net/swoogie/1rkhn7ek/39/

Quando si aggiunge un nuovo elemento con le chiamate del plugin jQuery, è ansible eseguire le seguenti operazioni:

 $('
...
').hoverCard(function(){...}).appendTo(...)