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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...