事件捕获阶段为啥没触发我的监听函数?

Des.志鲜 阅读 16

我在给一个嵌套的div结构加点击事件,想在捕获阶段就处理,但发现根本没进回调。是不是我写错了?

试过把第三个参数设成true,也确认了元素确实被点到了,但就是不执行。控制台也没报错。

document.getElementById('outer').addEventListener('click', () => {
  console.log('捕获阶段 outer');
}, true);

document.getElementById('inner').addEventListener('click', () => {
  console.log('冒泡阶段 inner');
}, false);
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
长孙晴文
问题可能是 outer 和 inner 的嵌套关系写反了。捕获阶段是从外层往内层传的,所以 outer 必须是 inner 的祖先元素,点击 inner 才会触发 outer 的捕获监听。

检查一下你的 HTML 结构是不是这样:


点击我



如果不是这种嵌套关系,点击 inner 就不会触发 outer 的捕获阶段回调。
点赞
2026-03-17 10:07