.on()jquery无法正常工作

时间:2013-01-08 18:42:27

标签: jquery ajax dom

  

可能重复:
  jQuery - convert .live() to .on()
  JQuery ‘on’ vs. ‘live’
  Turning live() into on() in jQuery

我知道.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
});

怎么了?

3 个答案:

答案 0 :(得分:2)

由于您的Ajax更改了dom,您需要在通话中提供父母,如下所示:

$("#itemParent").on("click", ".item", function(event){
  alert('test');
});

答案 1 :(得分:2)

检查documentation here.on的工作方式略有不同:

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

答案 2 :(得分:0)

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

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