添加单击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()
将需要处理页面上的每次单击。
现在和将来,为当前选择器匹配的所有元素附加事件处理程序。
$(".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.... });
尝试live()方法。 代替:
$(".record").click(function(e) { do stuff here.... });
试试这个:
$(".record").live(function(e) { do stuff here.... });