30

如上所述http://api.jquery.com/live/

从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。

正确的。所以而不是

$('.dynamicallyCreatedElement').live('click', function(){
  console.log('click');
});

我应该使用:

$('.dynamicallyCreatedElement').on('click', function(){
  console.log('click');
});

但是,它不会将事件绑定到on()调用后创建的元素。那么它真的是更好的live()方法吗?

我错过了什么吗?

4

4 回答 4

63

要以与以前on相同的方式live 使用,您需要像这样使用它:

$(document).on("click", ".dynamicallyCreatedElement", function() {   
    console.log('click'); 
});  

因此,您将on处理程序绑定到document自身(或者,实际上,新元素将“出现”的容器元素——感谢@devnull69 的澄清),然后将事件类型和选择器传递给它。

live您会在文档页面的中途找到几个示例。

于 2012-04-24T09:44:21.663 回答
13
$('#closestStaticParent').on('click', '.dynamicallyCreatedElement' function(){
    console.log('click');
});
于 2012-04-24T09:44:28.147 回答
4

用作委托()

$('body').on('click', '.dynamicallyCreatedElement', function () {
});

编辑:每个人都明白,当使用 delegate() 时,选择器是第一个参数,而 on() 是第二个参数。

于 2012-04-24T09:44:42.127 回答
2

我发现需要使用这种方法:

$('#container').on('click','.dynamicallyCreatedElement',function(){
    console.log('click');
});
于 2012-04-24T09:45:53.077 回答