2013-02-16 44 views
0

我的代码:jQuery的 - 动态生成的孩子不触发点击

$(".test1").children().click(function(){ 
    $(".test2").append('<span>something</span>');   
}); 

$(".test2").children().on('click', function(){ 
    alert("done");  
}); 

与“东西”的跨度应该是test2的最后一个子点击test1的儿童后。 是我的追加做对吗? test2上的点击事件是否正确?

thx!

回答

1

这个工程:

$(".test1").children().click(function(){ 
    $(".test2").append('<span> something</span>');   
}); 

$(".test2").on('click', 'span', function(){ 
    alert("done");  
}); 

live demo

+0

thx,这个工作!,但有没有办法让点击触发,即使test2的孩子不是跨度? – 2013-02-17 14:41:49

0

确定只是你的追加一点解释,你的追加仅仅是正确的,但新的孩子之前,你的贴合点击事件$(".test2").children()追加(TEST1点击)。所以点击事件永远不会附加到跨度。

+0

我点击test1后点击test1 jsut,然后点击test1 – 2013-02-17 14:42:30

+0

是的,但在这种情况下,您在点击之前分配事件处理程序。当分配事件处理程序时,您会看到新的孩子不在场。 '.children()'表示那个时候的孩子。这就是为什么'$(“。test2”)。on'工作时,处理程序在父级上设置,“span”是过滤器,所以如果你想使它适用于跨度以外的其他工作,你应该改变过滤器。 – srosh 2013-02-17 19:34:02