我已经知道一段时间了.on应该替换.live,但是我从来没有能够让它工作。
我试过了:
$(this).on('click', function(){
// Do something...
})
$(this).on({
click: function(){ // Do something }
})
但它永远不适合我!
特别是当我尝试将事件绑定到最初可能不存在于页面上的元素时。
有人可以一劳永逸地为我解决这个问题吗?
我正在使用最新版本的jquery。
答案 0 :(得分:2)
这样做:
$(".parent").on('click', ".child", function(){
// Do something...
})
您使用的语法与bind
类似。要将事件绑定到所有将来的元素,请使用上面的语法。
答案 1 :(得分:2)
对于动态生成的元素,您需要使用
$(document).on('click','YOUR SELECTOR', function(){
});
这是因为document是元素的容器,可以监视DOM的更改。对于每个动作,都需要有一个显式的事件监听器。如果将某些内容绑定到$(this),则删除它时它(选择器)可能不存在。
答案 2 :(得分:1)
您需要指定哪些元素。
$element.on('click', '.foo', handler)
会将handler
绑定到.foo
内的所有实时$element
。