简单的问题,因为jQuery .live()的1.7版本已被弃用,而有利于.on();但.on()似乎不适用于通过JavaScript呈现并加载到DOM中的元素。所以我的问题是,是否应该使用.live()或.on()如何捕获这些新生成的元素?
举个例子,这是我的代码:
$("#listitem").append("<li id='removeitem'>" +
formdata + ' <a href="#">Remove</a></li>');
当我尝试通过.on()操作这个元素时 - 结果什么都没有,而.live()能够抓住这个元素。
$("#removeitem").live("click", function(event) { alert($(this).text()); });
答案 0 :(得分:7)
live
版本:
$("#removeitem").live("click", function(event) { alert($(this).text()); });
应更改为:
$("#containerId").on("click", "#removeitem", function(event) {
alert($(this).text());
});
containerId
是加载removeitem
的静态元素。
您只需使用body
作为静态元素:
$("body").on('click', '#removeitem'm fn);
但代码的效率会降低,只需尝试使用它来展示它是如何工作的。
备注:强>
答案 1 :(得分:1)
您应该尝试.on()
这样:
$('#listitem').on('click', '#removeitem', function() {
alert($(this).text());
});
<强> DEMO 强>
如果您没有removeitem
这样的固定ID,如果其结构如removeitem1
,removeitem1
等,请尝试:
$('#listitem').on('click', '[id^=removeitem]', function() {
alert($(this).text());
});