2013-05-24 2 views
7

У меня есть заявление, добавив новый DIV:JQuery: добавление обработчика событий для только что созданный элемент

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

Но я хотел бы, чтобы не только создать элемент, но и назначить на («щелчок») действие, Это. Конечно, я мог бы добавить сгенерированный идентификатор, а затем присоединиться к созданному элементу этим идентификатором, но я чувствую, что есть более красивое решение.

Не так ли?

ответ

11

Вам не нужно добавлять идентификатор, а затем спросить jQuery, чтобы разобрать селектор, чтобы найти элемент. Вы можете сделать это прямо:

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

Спасибо! Работает! –

3

вы можете использовать JQuery ON .. а также вы можете использовать селектор класса вместо идентификатора :) как $(".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

Если вы используете '.on()', вы можете сделать это один раз, когда документ будет готов, вам не нужно делать это снова, когда элемент будет добавлен. – Barmar

Смежные вопросы