为什么;单击"&引用;“代表”;及;“生活”;在使用jQuery时,事件冒泡的行为会有所不同吗?

为什么;单击"&引用;“代表”;及;“生活”;在使用jQuery时,事件冒泡的行为会有所不同吗?,jquery,jquery-events,event-bubbling,Jquery,Jquery Events,Event Bubbling,我编写了一个示例JavaScript程序来演示jQuery函数的不同事件冒泡行为,单击,委托和实时 这是你的电话号码 对于每个函数,包装器中都有一个包装器和一个click链接,这两个都是通过click事件函数注册的 我注意到 在live和delegate中使用stopPropagation不会阻止事件冒泡 在live和delegate中,首先触发包装中的单击事件,然后触发单击链接。但是,单击功能的顺序相反 有人能解释这两种现象吗 该示例使用的是jQuery1.6.4,但您可以调整版本。以支持和使

我编写了一个示例JavaScript程序来演示jQuery函数的不同事件冒泡行为,
单击
委托
实时

这是你的电话号码

对于每个函数,包装器中都有一个包装器和一个click链接,这两个都是通过click事件函数注册的

我注意到

  • live
    delegate
    中使用
    stopPropagation
    不会阻止事件冒泡
  • live
    delegate
    中,首先触发包装中的单击事件,然后触发单击链接。但是,
    单击功能的顺序相反
  • 有人能解释这两种现象吗

    该示例使用的是jQuery1.6.4,但您可以调整版本。

    以支持和使用jQuery1.7+。我会立即停止使用
    live
    ,而不是以后。上面链接的文档实际上提供了大量的信息,并且很好地解释了这些功能是如何工作的

    委派和live都依赖于冒泡。这就是它们与单击的区别。这件事引起了他们的兴趣。委托优于live,因为您告诉它监视特定的父级,而live会一直冒泡到文档级别。非常昂贵

    jQuery文档值得在此引用:

    因为.live()方法在事件传播到 在文档的顶部,无法停止的传播 现场活动。类似地,由.delegate()处理的事件将传播 委托给他们的要素;绑定到上的事件处理程序 DOM树中它下面的任何元素都将已经执行 在调用委托事件处理程序时。这些处理者, 因此,可以通过以下方式防止委托处理程序触发: 调用event.stopPropagation()或返回false


    如果您了解live和delegate的实现,那么您就会理解这种差异的原因。Live和delegate在某种程度上不附加到元素,因为绑定时元素不在那里,它们分别附加到根或特定父元素,因此存在差异。它们利用了事件冒泡,因此当事件从子元素冒泡到新添加元素的根或特定父元素时,可以查看此博客条目以获取有关以下内容的详细视图:


    jQuery并解释了这一点-在发布问题之前,您是否查看了文档?我尝试过,但发现有点难以理解。。。