当前位置: 首页 > news >正文

说一下事件传播机制

1. 概念

事件传播机制指的是事件在 DOM 树中传播的过程,当事件发生在某个元素时,浏览器会按照一定顺序触发对应元素的事件处理函数。

2. 三个阶段

浏览器标准事件传播分为 三个阶段:

阶段说明
捕获阶段(Capturing Phase)事件从 document → 父元素 → 目标元素 依次向下传播,可捕获事件
目标阶段(Target Phase)事件到达 目标元素,先触发目标元素的捕获事件,再触发冒泡事件
冒泡阶段(Bubbling Phase)事件从 目标元素 → 父元素 → document 向上冒泡,触发绑定的冒泡事件

注意:并不是所有事件都支持冒泡,例如 focus、blur 默认不冒泡,但有 focusin/focusout 支持冒泡。

3. addEventListener 的第三个参数

element.addEventListener('click', handler, useCapture);
  • useCapture = true → 捕获阶段触发

  • useCapture = false → 冒泡阶段触发(默认)

示例

<div id="parent"><button id="child">Click me</button>
</div>
const parent = document.getElementById('parent');
const child = document.getElementById('child');// 捕获阶段
parent.addEventListener('click', () => console.log('parent capture'), true);// 冒泡阶段
parent.addEventListener('click', () => console.log('parent bubble'), false);child.addEventListener('click', () => console.log('child bubble'), false);

点击按钮的输出顺序:

parent capture → child bubble → parent bubble

4. stopPropagation 与 stopImmediatePropagation

  • event.stopPropagation()

    • 阻止事件向上或向下传播,但当前元素的其他同类型事件仍会触发
  • event.stopImmediatePropagation()

    • 阻止事件传播,并且阻止当前元素上同类型的其他事件触发

5. 事件委托与传播机制关系

  • 事件委托依赖 冒泡阶段

  • 绑定在父元素的事件会在子元素触发事件后被捕获到

ul.addEventListener('click', e => {console.log(e.target); // 实际触发事件的子元素
});
http://www.lryc.cn/news/624087.html

相关文章:

  • Pandas数据结构详解Series与DataFrame
  • 【C#补全计划】多线程
  • 《解构WebSocket断网重连:指数退避算法的前端工业级实践指南》
  • 代码随想录刷题——字符串篇(五)
  • MySQL数据库初识
  • Linux 服务:iSCSI 存储服务配置全流程指南
  • 「数据获取」《中国文化文物与旅游统计年鉴》(1996-2024)(获取方式看绑定的资源)
  • ICCV 2025 | Reverse Convolution and Its Applications to Image Restoration
  • 一键管理 StarRocks:简化集群的启动、停止与状态查看
  • HTTP请求方法:GET与POST的深度解析
  • 【技术博客】480p 老番 → 8K 壁纸:APISR × SUPIR × CCSR「多重高清放大」完全指南
  • PCA 实现多向量压缩:首个主成分的深层意义
  • 平行双目视觉-动手学计算机视觉18
  • Go语言并发编程 ------ 锁机制详解
  • C++析构函数和线程退出1
  • C++继承(2)
  • Eclipse Tomcat Configuration
  • Docker-14.项目部署-DockerCompose
  • Docker入门:容器化技术的第一堂课
  • 飞算JavaAI赋能高吞吐服务器模拟:从0到百万级QPS的“流量洪峰”征服之旅
  • Linux软件编程:进程与线程(线程)
  • ruoyi-vue(十一)——代码生成
  • 最长回文子串问题:Go语言实现及复杂度分析
  • vulnhub-lampiao靶机渗透
  • 科目二的四个电路
  • 实时视频延迟优化实战:RTSP与RTMP播放器哪个延迟更低?
  • 机器学习--数据清洗
  • 音频分类标注工具
  • RAC环境redo在各节点本地导致数据库故障恢复---惜分飞
  • python pandas库 series如何使用