-1

可能重复:
jQuery - 将 .live() 转换为 .on()
JQuery 'on' vs. 'live'</a>
在 jQuery 中将 live() 转换为 on()

我知道 .live() 已被弃用,但 .on() 给我带来了一些错误。当我动态生成圆顶时它不起作用,它只在第一次点击时起作用。虽然与 .live() 相同的代码可以正常工作。我正在使用 jquery 1.8

工作代码

$('.item').live('click', function(e) {
   alert('test');
   // ajax call that regenerates .item element
});

此代码仅在第一次单击时有效:

$('.item').on('click', function(e) {
   alert('test');
   // ajax call that regenerates .item element
});

怎么了?

4

3 回答 3

2

由于 dom 会随着您的 Ajax 发生变化,因此您需要在随叫随到时提供一个父级,如下所示:

$("#itemParent").on("click", ".item", function(event){
  alert('test');
});
于 2013-01-08T18:45:01.610 回答
2

在此处查看文档.on工作方式略有不同:

$(document).on("click", ".item", function(event){
    alert('test');
    // ajax call that regenerates .item element
});
于 2013-01-08T18:45:43.190 回答
0

正如 Kevin B 提到的,使用 document 作为委托的上下文,或者更好的静态父级:

$(document).on('click','.item', function(e) {
   alert('test');
   // ajax call that regenerates .item element
});
于 2013-01-08T18:45:43.207 回答