非常直截了当,我一直在寻找所有jQuery事件的完整列表,这些事件没有泡沫,但我一直找不到。
例如,我正在寻找image.load
,XMLHttpRequest.error
等
答案 0 :(得分:5)
The docs for jQuery's on()
method says this(在“附加说明”下);
W3C指定
focus
和blur
事件不冒泡,但jQuery定义了冒泡的跨浏览器focusin
和focusout
事件。当focus
和blur
用于附加委托事件处理程序时,jQuery会映射名称并分别将其作为focusin
和focusout
传递。为保持一致性和清晰度,请使用冒泡事件类型名称。在所有浏览器中,
load
,scroll
和error
事件(例如,在<img>
元素上)不会冒泡。在Internet Explorer 8及更低版本中,paste
和reset
事件不会冒泡。此类事件不支持与委派一起使用,但可以在直接连接事件处理程序时使用它们生成事件的元素。
我强调加粗最重要的句子。
在文档的早期(在“直接和委托事件”下,它也说明了这一点:
在Internet Explorer 8及更低版本中,诸如
change
和submit
之类的一些事件本身并未冒泡,但jQuery会将这些事件修补为泡泡并创建一致的跨浏览器行为。
您还会发现mouseleave
和mouseenter
没有冒泡(请使用mouseover
和mouseout
事件。这将在各自的文档中讨论。
我不会开始全面地调用上面的列表,但这是一个开始。我不确定你的问题中XMLHttpRequest是如何形成的;它不是DOM的一部分,因此没有任何祖先,因此不能像普通的DOM事件一样冒泡。
答案 1 :(得分:1)
冒泡的事件:
beforeinput
,click
,compositionstart
,compositionupdate
,compositionend
,dblclick
,focusin
,focusout
,input
,keydown
,keyup
,mousedown
,mousemove
,mouseout
,mouseover
,mouseup
,{ {1}},select
。
不要冒泡的事件:
wheel
,abort
,blur
,error
,focus
,load
,mouseenter
,mouseleave
,resize
(*),scroll
注意DOM Level 3事件没有定义所有事件,其中一些事件是由HTML5规范定义的。
该规范不太清楚,因为并不总是说事件是否会冒泡并在非规范部分定义一些事件。在其中一个中它表示drag-and-drop events泡沫:
unload
,dragstart
,drag
,dragenter
,dragexit
,dragleave
,dragover
,drop
(*)在dragend
元素上调度时,Document
事件类型必须冒泡到scroll
对象。