1

使用较新的 jQuery .click(),.submit()等被替换为:

$('#foo').on('click', function() {
    //
});

就最佳实践而言。有没有发生过类似的事情.live()?或者这仍然是最好的方法吗?

$('#foo').live('click', function() {
    //
});
4

4 回答 4

3

委托使用.on()是正确的方法,而不是使用现场

$('staticAncestorElement').on('click','#foo',function(){

});

从 jQuery live()文档中可以看出

$(选择器).live(事件、数据、处理程序); // jQuery 1.3+

$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+

$(document).on(事件、选择器、数据、处理程序); // jQuery 1.7+

于 2012-11-30T21:54:27.640 回答
3

On()具有所有其他绑定的所有功能。要绑定到动态元素,您可以on()像这样使用:

$(document).on('click', '#foo', function() {
    //
});

最好使用 close 静态元素而不是document.

引用我关于 jQuery 提供的许多绑定方法的另一篇文章:

bind()在1.0、1.3、1.4.2 和 1.7 中live()添加。delegate()on()

从 1.7 开始on()是首选用途,live()已弃用且根本不推荐使用。如果您使用的是 1.3,请使用1.4.2bind()代替 和自 1.7 使用,而不是其他任何一个。live()delegate()live()on()

您可以在此处查看完整的帖子,其中还列出了live()jQuery 1.7 或更高版本中的许多缺点以及不应再使用它的原因。

于 2012-11-30T21:54:37.727 回答
1

使用较新的 jQuery .click()、.submit() 等被替换为

他们没有被替换。click并且submit仍然有效,但现在它们是on. 不推荐使用的方法是bindlive。现在您可以这样做来委托事件:

$(closestStaticParent).on('click', 'element', function(){ ... })
于 2012-11-30T21:55:02.220 回答
1

.click没有被替换.on("click"。阅读文档。

As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers.

.live.on和取代.off

其他功能如.click将继续按预期工作

于 2012-11-30T21:55:33.250 回答