.delegate工作,.live没有。为什么?

时间:2013-05-07 17:43:18

标签: jquery ajax delegates click live

有人可以解释一下吗?我的代码工作正常,现在我使用.delegerate但我不知道为什么我必须使用它。 我有一个带有“ajaxDiv”类的ajax创建元素。当我像这样使用.live时,我没有得到警报。我在这个函数之后编写的所有代码都不起作用。

$(".ajaxDiv").live("click", function(event){
    alert('I don\'t work.')
});

但是当我这样做的时候,就可以了。

$("body").delegate(".ajaxDiv", "click", function(){
    alert('I work like a charm!')
});

谢谢!

3 个答案:

答案 0 :(得分:3)

我猜你使用的是jQuery 1.9? .live()已被移除。

与此同时,您可以使用Migrate Plugin恢复.live()或继续使用.delegate()

但是,为了获得最佳的向前兼容性,请考虑使用.on()。只需切换.delegate()

的前两个参数即可

答案 1 :(得分:0)

Live已在jQuery中弃用。

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。 参考:http://api.jquery.com/live/

答案 2 :(得分:0)

在jQuery 1.9中删除了

.live.delegate尚未删除。实际上,它并未被弃用,但其使用已被.on.delegate documentation)取代。我建议您对所有绑定使用.on,包括事件委派。