2013-05-24 13 views
7

Ho una dichiarazione aggiunta di un nuovo div:jQuery: l'aggiunta di gestore di eventi per elemento appena creato

$('#dates').append('<div class="'+classname+'">'+dd+'<br /><span class="month_selector">'+dm+'</span></div>'); 

Ma mi piacerebbe creare non solo elemento, ma anche per assegnare il ('click') azione esso. Ovviamente potrei aggiungere id generato e quindi accedere all'elemento creato da questo id, ma sento che c'è una soluzione più bella.

E '?

risposta

11

Non è necessario aggiungere un ID e quindi chiedere a jQuery di analizzare un selettore per trovare l'elemento. Si può fare direttamente questa:

$('#dates').append(
    $('<div class="'+classname+'">'+dd+'<br /><span class="month_selector">'+dm+'</span></div>') 
    .click(function(){ 
     // handle click 
    }) 
); 
+0

Grazie! Sta funzionando! –

3

è possibile utilizzare jQuery via .. e inoltre è possibile utilizzare selettore di classe invece di id :) come $(".classname")

$('#dates').append('<div class="'+classname+'">'+dd+'<br /><span class="month_selector">'+dm+'</span></div>'); 

$('#dates').on('click','.'+classname, function(){ 
alert("on div click"); 
}); 

$('#dates').on('click','.month_selector', function(){ 
alert("on SPAN click"); 
}); 
+1

Se usi '.on()' puoi farlo una volta quando il documento è pronto, non devi farlo di nuovo quando l'elemento viene aggiunto. – Barmar

Problemi correlati