哪个jQuery事件不泡?

时间:2014-08-28 19:45:42

标签: javascript jquery javascript-events

非常直截了当,我一直在寻找所有jQuery事件的完整列表,这些事件没有泡沫,但我一直找不到。

例如,我正在寻找image.loadXMLHttpRequest.error

等事件

2 个答案:

答案 0 :(得分:5)

The docs for jQuery's on() method says this(在“附加说明”下);

  

W3C指定focusblur事件不冒泡,但jQuery定义了冒泡的跨浏览器focusinfocusout事件。当focusblur用于附加委托事件处理程序时,jQuery会映射名称并分别将其作为focusinfocusout传递。为保持一致性和清晰度,请使用冒泡事件类型名称。

     

在所有浏览器中,loadscrollerror事件(例如,在<img>元素上)不会冒泡。在Internet Explorer 8及更低版本中,pastereset事件不会冒泡。此类事件不支持与委派一起使用,但可以在直接连接事件处理程序时使用它们生成事件的元素。

我强调加粗最重要的句子。

在文档的早期(在“直接和委托事件”下,它也说明了这一点:

  

在Internet Explorer 8及更低版本中,诸如changesubmit之类的一些事件本身并未冒泡,但jQuery会将这些事件修补为泡泡并创建一致的跨浏览器行为。

您还会发现mouseleavemouseenter没有冒泡(请使用mouseovermouseout事件。这将在各自的文档中讨论。

我不会开始全面地调用上面的列表,但这是一个开始。我不确定你的问题中XMLHttpRequest是如何形成的;它不是DOM的一部分,因此没有任何祖先,因此不能像普通的DOM事件一样冒泡

答案 1 :(得分:1)

根据DOM Level 3 Events spec

  • 冒泡的事件:

    beforeinputclickcompositionstartcompositionupdatecompositionenddblclickfocusinfocusoutinputkeydownkeyupmousedownmousemovemouseoutmouseovermouseup,{ {1}},select

  • 不要冒泡的事件:

    wheelabortblurerrorfocusloadmouseentermouseleaveresize (*)scroll

注意DOM Level 3事件没有定义所有事件,其中一些事件是由HTML5规范定义的。

该规范不太清楚,因为并不总是说事件是否会冒泡并在非规范部分定义一些事件。在其中一个中它表示drag-and-drop events泡沫:

unloaddragstartdragdragenterdragexitdragleavedragoverdrop


(*)在dragend元素上调度时,Document事件类型必须冒泡到scroll对象。