我知道jQuery中的live()可用于将事件绑定到绑定时不存在的元素。 但是,bind()方法和live()之间的事件传播也存在差异。 以下是jQuery in action book中的摘录:
“首先,要认识到实时事件不是本机”正常“事件。当发生诸如点击之类的事件时,它会通过DOM元素向上传播,如本章前面所述,调用已建立的任何事件处理程序一旦事件到达用于创建调用live()的包装集的上下文(通常是文档),上下文将检查自身内与实时选择器匹配的元素。实时事件处理程序在匹配的任何元素上触发,此触发事件不会传播。“
任何人都可以帮我理解这意味着什么吗?
答案 0 :(得分:0)
想一想这个场景:
我有几个<p>
元素。
$('p').bind('click', function(){...});
添加一些额外的<p>
(使用get()
或html()
,任何内容)
新的<p>
没有任何约束!!
当然,由于在步骤2中执行<p>
时新的$('p')...
不存在,因此它没有将事件处理程序绑定到它们。
现在,如果你这样做:
我有几个<p>
元素。
$('p').live('click', function(){...});
添加一些额外的<p>
(使用get()
或html()
,任何内容)
新的<p>
确实有绑定!!
注意 jQuery自1.7以来已弃用live()
,而是使用on()