首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery wrt to event propagation中bind()和live()的差异

问jQuery wrt to event propagation中bind()和live()的差异
EN

Stack Overflow用户
提问于 2013-12-26 12:44:23
回答 1查看 114关注 0票数 0

我知道jQuery中的live()可以用来将事件绑定到绑定时不存在的元素。但是,bind()方法和live()方法之间的事件传播的wrt也存在差异。以下是jQuery in action book的摘录:

“首先,要认识到实时事件不是本机的”正常“事件。当事件发生时,如本章前面所述,它通过DOM元素向上传播,调用任何已建立的事件处理程序。一旦事件到达用于创建包装集的上下文(在该上下文上调用live() )(通常是文档),上下文将检查其自身内与实时选择器匹配的元素。实时事件处理程序将在匹配的任何元素上触发,并且此触发的事件不会传播。”

有人能帮我理解这是什么意思吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-26 12:53:05

想一想这个场景:

我有几个<p>元素。

代码语言:javascript
复制
$('p').bind('click', function(){...});

添加一些额外的<p> (使用get()或html(),任何东西)

新的<p>没有任何绑定!!

当然,因为在步骤2中执行$('p')...时新的<p>还不存在,所以它没有将事件处理程序绑定到它们。

现在,如果你这样做:

我有几个<p>元素。

代码语言:javascript
复制
$('p').live('click', function(){...});

添加一些额外的<p> (使用get()或html(),任何东西)

新的<p>确实有绑定!!

注意:从1.7开始, jQuery不再推荐使用live(),而是使用on()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20779246

复制
相关文章

相似问题

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