You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

事件捕获是否会经过触发节点的同级节点?结合DOM实例咨询

事件捕获会不会经过触发节点的同级节点?

好问题!直接给你明确结论:事件捕获阶段完全不会经过触发节点的同级节点。

我们结合你给出的DOM结构来拆解具体逻辑:

<div id="parent">
  d1
  <div id="child-1">child-1</div>
  <div id="child-2">child-2</div>
</div>

当你点击child-2触发事件时,事件捕获的传播路径是严格沿着DOM树从根节点自上而下直达目标节点,只会经过目标节点的「祖先链」:
window → document → html → body → parent → child-2

整个路径里完全不会出现child-1这个同级节点,自然也不会去检查它是不是事件触发目标。

为了更直观验证,你可以跑一段测试代码:

const parent = document.getElementById('parent');
const child1 = document.getElementById('child-1');
const child2 = document.getElementById('child-2');

// 绑定捕获阶段的监听器(第三个参数设为true表示捕获阶段触发)
parent.addEventListener('click', () => console.log('parent 捕获阶段'), true);
child1.addEventListener('click', () => console.log('child-1 捕获阶段'), true);
child2.addEventListener('click', () => console.log('child-2 捕获阶段'), true);

点击child-2后,控制台只会输出:

parent 捕获阶段
child-2 捕获阶段

child-1的捕获监听器根本不会触发——这就实锤了捕获路径不会经过同级节点。

顺便补充下事件流的完整逻辑:事件会依次经过「捕获阶段(根到目标)→ 目标阶段(目标节点本身)→ 冒泡阶段(目标回到根)」,不管是捕获还是冒泡阶段,同级节点都不会被波及,除非事件是直接在它们身上触发的。

内容的提问来源于stack exchange,提问作者user4602966

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 14:57:55