我知道jQuery中的live()可以用来将事件绑定到绑定时不存在的元素。但是,bind()方法和live()方法之间的事件传播的wrt也存在差异。以下是jQuery in action book的摘录:
“首先,要认识到实时事件不是本机的”正常“事件。当事件发生时,如本章前面所述,它通过DOM元素向上传播,调用任何已建立的事件处理程序。一旦事件到达用于创建包装集的上下文(在该上下文上调用live() )(通常是文档),上下文将检查其自身内与实时选择器匹配的元素。实时事件处理程序将在匹配的任何元素上触发,并且此触发的事件不会传播。”
有人能帮我理解这是什么意思吗?
发布于 2013-12-26 12:53:05
想一想这个场景:
我有几个<p>元素。
$('p').bind('click', function(){...});添加一些额外的<p> (使用get()或html(),任何东西)
新的<p>没有任何绑定!!
当然,因为在步骤2中执行$('p')...时新的<p>还不存在,所以它没有将事件处理程序绑定到它们。
现在,如果你这样做:
我有几个<p>元素。
$('p').live('click', function(){...});添加一些额外的<p> (使用get()或html(),任何东西)
新的<p>确实有绑定!!
注意:从1.7开始, jQuery不再推荐使用live(),而是使用on()
https://stackoverflow.com/questions/20779246
复制相似问题