.on不能代替现场工作

时间:2013-01-09 06:27:32

标签: javascript jquery event-handling live

我已经知道一段时间了.on应该替换.live,但是我从来没有能够让它工作。

我试过了:

$(this).on('click', function(){
    // Do something...
})

$(this).on({
    click: function(){ // Do something }
})

但它永远不适合我!

特别是当我尝试将事件绑定到最初可能不存在于页面上的元素时。

有人可以一劳永逸地为我解决这个问题吗?


我正在使用最新版本的jquery。

3 个答案:

答案 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