javascript – 事件冒泡/捕获 – 它从哪里开始/结束?

我知道一个事件有两种模式 – 冒泡和捕捉.

当事件设置为冒泡时,Javascript会检查“文档”吗?

当事件设置为捕获时,Javascript是否始终从“文档”开始?

Javascript如何知道停止/启动的位置?

更新:

假设我的body标签中有以下代码.

<div id='outer'>
    <div id='inner'></div>
</div>

当我将一个事件设置为#inner来冒泡时,Javascript会检查文档还是停在#outer?

事件冒泡

JavaScript会一直检查文档.如果在文档上添加侦听器并在内部添加侦听器,则两个侦听器都会触发.

事件捕获

JavaScript从文档开始,一直到内部.如果在文档上添加侦听器并在内部添加侦听器,则两个侦听器都会触发.

我的发现

事实证明,浏览器会进行某种智能处理

a)不必遍历整个父级别

b)不必遍历所有事件.

证明

a)单击内部div时,浏览器没有时间触发两个单击事件:

Fiddle

b)当存在许多其他事件附加到不在父层次结构中的其他DOM元素时,浏览器没有时间触发单击内部div时的两个点击事件:

Fiddle

相关文章
相关标签/搜索