添加单击function以动态创建html标签

所以我有一个包含许多其他div的div。 这些其他div中的每一个都有一个名为record的类。 我只使用这个类来选择所有这些div。

result1
result2
result3
result4

我还添加了一个click事件=

 $(".record").click(function(e) { do stuff here.... }); 

现在我想动态添加另一个div。

 $("#resultContainer").append("
result5>/div>");

但是现在点击事件没有添加到记录中。

我的想法是创建一个名为update()的函数,它执行$(".record....代码并在每次添加记录时调用该函数。但是原来的div不止一次执行该操作!

我怎样才能把所有的div,无论它们什么时候添加,都放到do stuff here...之前do stuff here...点击一下就是一次?

谢谢!

另外,我还有动态div上的按钮。 所以这个解决方案能够处理这样的事情: $(".save").button({ icons: { primary: 'ui-icon-disk' }, text: false }); 会更好。

在这种情况下不要使用.live() 。 这是jQuery的.delegate()方法的完美情况,它更有效。

 $("#resultContainer").delegate('.record','click',function() { // do stuff here... }); 

只需要处理resultContainer单击以查看它们是否与.record匹配,其中.live()将需要处理页面上的每次单击。

http://api.jquery.com/live/

现在和将来,为当前选择器匹配的所有元素附加事件处理程序。

 $(".record").live("click", function(e) { //do stuff here... }); 

从jQuery 1.7开始,你应该使用on()而不是live()delegate() 。 从文档:

从jQuery 1.7开始,.on()方法提供了附加事件处理程序所需的所有function。

on()方法应附加到静态父或document

 $(document).on( 'click', '.record', function(e) { // do stuff here.... }); 

看看jQuery live()函数

http://api.jquery.com/live/

无论页面如何变化,您都可以为所有div添加事件侦听器

尝试live()方法。 代替:

 $(".record").click(function(e) { do stuff here.... }); 

试试这个:

 $(".record").live(function(e) { do stuff here.... });