新闻中心
J*aScript中事件冒泡与事件捕获机制_j*ascript技巧
事件传播分捕获、目标、冒泡三阶段;默认在冒泡阶段执行,通过addEventListener第三参数可设为捕获;使用stopPropagation可阻止传播,实现精确事件控制。

在J*aScript中,事件冒泡和事件捕获是DOM事件传播的两种机制。理解它们对开发交互式网页至关重要,尤其是在处理嵌套元素的事件时。
事件传播的三个阶段
当一个事件(如点击)发生在某个DOM元素上时,它并不会立即触发该元素的事件处理程序,而是经历三个阶段:
- 捕获阶段(Capture Phase):事件从window对象向下传递,经过document、html、body,直到目标元素的父级。
- 目标阶段(Target Phase):事件到达绑定事件的目标元素本身。
- 冒泡阶段(Bubbling Phase):事件从目标元素逐级向上传播回window对象。
大多数开发者只熟悉冒泡阶段,因为默认情况下事件监听器在冒泡阶段执行。
事件冒泡(Event Bubbling)
事件冒泡是指事件先由最具体的元素接收,然后逐级向上传播至最不具体的节点(如document或window)。
例如:假设HTML结构如下:
<div id="outer"> <div id="inner">点击我</div> </div>
J*aScript代码:
document.getElementById('outer').addEventListener('click', function() {
console.log('外层div被点击');
});
document.getElementById('inner').addEventListener('click', function() {
console.log('内层div被点击');
});
当你点击“内层div”时,输出顺序为:
- 内层div被点击
- 外层div被点击
这就是冒泡:事件从inner传播到outer。
事
件捕获(Event Capturing)
事件捕获与冒泡相反:事件从最不具体的节点(window)开始,逐级向下传递,直到目标元素。
万相营造
阿里妈妈推出的AI电商营销工具
168
查看详情
要启用捕获模式,在addEventListener中将第三个参数设为true:
document.getElementById('outer').addEventListener('click', function() {
console.log('捕获阶段:外层div');
}, true);
document.getElementById('inner').addEventListener('click', function() {
console.log('目标阶段:内层div');
}, false);
此时点击inner,输出为:
- 捕获阶段:外层div
- 目标阶段:内层div
外层div的事件在捕获阶段触发,inner仍在冒泡阶段执行(因设为false)。
如何阻止事件传播
有时你不希望事件继续传播,可以使用以下方法:
- event.stopPropagation():阻止事件继续在当前阶段传播(无论是捕获还是冒泡)。
- event.stopImmediatePropagation():除了阻止传播,还阻止当前元素上其他同类型事件处理函数的执行。
示例:
document.getElementById('inner').addEventListener('click', function(e) {
e.stopPropagation();
console.log('内层div,但阻止冒泡');
});
document.getElementById('outer').addEventListener('click', function() {
console.log('外层div');
});
此时点击inner,只会输出“内层div,但阻止冒泡”,外层不会响应。
基本上就这些。掌握事件冒泡和捕获,能帮助你更精准地控制事件行为,避免意外触发,也能实现事件委托等高级技巧。
以上就是J*aScript中事件冒泡与事件捕获机制_j*ascript技巧的详细内容,更多请关注其它相关文章!
# 更受欢迎
# 启用gzip压缩前端seo优化
# 基因优化网站有哪些
# 茂名网站建设优势有哪些
# 西安视频seo
# seo如何搞灰色流量
# 义乌导航网站建设招标
# 开封天眼关键词排名系统
# 河南各大营销推广方式
# 桂城杏坛网站建设
# 烟台网站优化教程电话
# 这就是
# 有哪些
# javascript
# 是在
# 它比
# 三个阶段
# 最不
# 如何使用
# 怎么做
# 设为
# 事件捕获
# win
# 事件冒泡
# html
# java
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
高德地图家和公司地址在哪设置 高德地图通勤路线设置方法【超详细】
妖精动漫免费平台 妖精动漫官网资源观看网址
抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧
随机参数递归函数的基准调用次数与时间复杂度探究
mc.js免安装版 mc.js一键畅玩入口
Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突
优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题
Shopware订单对象中获取产品自定义字段的正确方法
Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换
小米汽车11月交付量突破40000台!雷军:将继续努力
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
Win11怎么开启省电模式_Win11电池节电模式自动开启
Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】
Lar*el 递归关系中排除指定分支的教程
将HTML动态表格多行数据保存到Google Sheet的教程
高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法
J*aScript实现动态背景色下的文本与按钮颜色自适应调整
qq游戏大厅官方下载_qq游戏免费下载安装入口
CSS子选择器:如何区分并样式化嵌套列表的子层级
J*aScript设计模式实践_j*ascript代码优化
如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!
腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址
漫蛙网页登录入口 漫蛙漫画官方授权网址
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
Go语言中Map存储的结构体如何调用指针方法:深入解析与实践
快手网页版在线登录 快手网页版官网入口快速访问
UC浏览器官网入口2025最新 UC浏览器网页版正式地址
MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令
晋江读书网页版在线登录 晋江读书电脑版官网
印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】
LocoySpider如何部署到云服务器_LocoySpider云部署的远程配置
12306几点到几点不能订票? | 官方最新系统维护时间全解析
sublime怎么格式化代码_sublime代码美化与一键排版插件配置
QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口
Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】
TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法
Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录
MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId
一加Ace 6T实拍样张首次公布!李杰:主摄实力完全看齐4K档性能旗舰
QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用
React项目中导航栏Logo自适应布局:避免裁剪与布局溢出
照顾宝贝2小游戏点击立即在线玩
C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程
lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法
在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明
百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案
C++如何操作注册表_Windows平台下C++读写注册表的API函数详解
初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解
在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全
qq游戏手机版下载安装_qq游戏移动端入口


2025-10-30
浏览次数:次
返回列表
件捕获(Event Capturing)