首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有比使用.live()更好的方法将事件附加到AJAX加载的元素吗?

有比使用.live()更好的方法将事件附加到AJAX加载的元素吗?
EN

Stack Overflow用户
提问于 2012-12-01 05:49:58
回答 4查看 70关注 0票数 1

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

代码语言:javascript
运行
复制
$('#foo').on('click', function() {
    //
});

在最佳实践方面。.live()也发生过类似的事情吗?或者,这仍然是最好的方法吗?

代码语言:javascript
运行
复制
$('#foo').live('click', function() {
    //
});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-01 05:54:38

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

代码语言:javascript
运行
复制
$(document).on('click', '#foo', function() {
    //
});

最好是使用关闭的静态元素,而不是document

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

在1.0中添加了

bind(),在1.3中添加了live(),在1.4.2中添加了delegate(),在1.7中添加了on()

在1.7版本中,on()是首选用法,live()已弃用,根本不推荐使用。如果您使用的是1.3版本,请使用bind()而不是live();在1.4.2版本中,请使用delegate()而不是live();在1.7版本中,请使用on()而不是其他任何版本。

您可以查看完整的post here,其中还列出了live()的许多缺点,以及为什么在jQuery 1.7或更高版本中不应该再使用它。

票数 3
EN

Stack Overflow用户

发布于 2012-12-01 05:54:28

使用.on()而不是live是正确的委派方式

代码语言:javascript
运行
复制
$('staticAncestorElement').on('click','#foo',function(){

});

正如您从jQuery live()文档中所看到的

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

$(文档).delegate(选择器,事件,数据,处理器);// jQuery 1.4.3+

$(Document).on(事件,选择器,数据,处理器);// jQuery 1.7+

票数 3
EN

Stack Overflow用户

发布于 2012-12-01 05:55:02

具有较新的jQuery .click()、.submit()等的

被替换为

他们没有被替换。clicksubmit仍然有效,但现在它们是on的捷径。不推荐使用的方法是bindlive。现在,您可以执行以下操作来委托事件:

代码语言:javascript
运行
复制
$(closestStaticParent).on('click', 'element', function(){ ... })
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13653698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档