jQuery on()方法不绑定像live()这样的事件

hsz*_*hsz 30 jquery

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

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

对.而不是

$('.dynamicallyCreatedElement').live('click', function(){
  console.log('click');
});
Run Code Online (Sandbox Code Playgroud)

我应该用:

$('.dynamicallyCreatedElement').on('click', function(){
  console.log('click');
});
Run Code Online (Sandbox Code Playgroud)

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

我错过了什么吗?

Ser*_*eit 63

onlive 与工作相同的方式使用,您需要使用它,如:

$(document).on("click", ".dynamicallyCreatedElement", function() {   
    console.log('click'); 
});  
Run Code Online (Sandbox Code Playgroud)

因此,您将on处理程序绑定到document自身(或实际上,新元素将"出现"的容器元素 - 感谢@ devnull69进行说明),然后将其传递给事件类型和选择器.

您可以在live文档页面的中间找到几个示例.

  • 它不一定是`$(document)`.第一个选择器可以是动态创建的元素的任何已存在的父/容器元素 (7认同)

elc*_*nrs 13

$('#closestStaticParent').on('click', '.dynamicallyCreatedElement' function(){
    console.log('click');
});
Run Code Online (Sandbox Code Playgroud)