讲师中心 微信公众号
AI工具推荐 视频效率加速

理解JavaScript中的事件冒泡、捕获与委托_javascript事件

夜辰吖_9926

夜辰吖_9926

发布时间:2025-11-20 20:34:02

|

324人浏览过

|

来源于php中文网

原创

事件冒泡是从目标元素向上逐级触发父元素事件,事件捕获是从外向内传递并在捕获阶段触发,事件委托利用冒泡机制在父元素上处理子元素事件以提升性能。

理解javascript中的事件冒泡、捕获与委托_javascript事件

在JavaScript中,事件处理是前端开发的核心部分。理解事件冒泡、事件捕获和事件委托,能帮助我们更高效地管理页面交互,提升性能并减少内存消耗。

事件冒泡:从内向外触发

当一个元素上的事件被触发时,该事件会先在该元素上执行,然后逐级向上传播到父元素,直到到达文档根节点。这个过程称为事件冒泡

例如,点击一个按钮,如果该按钮嵌套在多个父容器中,事件会依次在按钮、其父div、body、html上触发(如果这些元素都绑定了相同类型的事件)。

Doc To HTML
Doc To HTML

使用 MinerU 文档处理引擎将 Word 文档(.doc、.docx)转换为保留结构和格式的干净 HTML。

下载

示例代码:

立即学习Java免费学习笔记(深入)”;

```html
点击我
```
```javascript document.getElementById('inner').addEventListener('click', () => { console.log('inner clicked'); });

document.getElementById('outer').addEventListener('click', () => { console.log('outer clicked'); });

<p>点击“inner”时,控制台输出:</p>
<ul>
  <li>inner clicked</li>
  <li>outer clicked</li>
</ul>
<p>这就是典型的冒泡行为——事件从最内层元素向上“冒泡”。</p>

<H3>事件捕获:从外向内触发</H3>
<p>与冒泡相反,<strong>事件捕获</strong>是从最外层元素开始,逐级向下传递到目标元素的过程。它发生在事件流的捕获阶段。</p>
<p>要启用捕获模式,可以在addEventListener中将第三个参数设为true。</p>
<p>修改上面的例子:</p>
<font style="color:#666">```javascript
document.getElementById('inner').addEventListener('click', () => {
  console.log('inner clicked');
}, true); // 捕获模式

document.getElementById('outer').addEventListener('click', () => {
  console.log('outer clicked');
}, true);
```</font>
<p>此时点击“inner”,输出变为:</p>
<ul>
  <li>outer clicked</li>
  <li>inner clicked</li>
</ul>
<p>说明事件先经过外层元素,再进入内层。捕获阶段通常用于提前拦截事件或在到达目标前做些处理。</p>

<H3>事件委托:利用冒泡提升效率</H3>
<p><strong>事件委托</strong>是一种利用事件冒泡机制,在父元素上监听子元素事件的技术。它特别适合动态内容或大量相似元素的场景。</p>
<p>比如有一个无序列表,每个li都有点击需求。传统做法是给每个li绑定事件,但如果列表项很多或频繁增删,这种方式效率低且浪费资源。</p>
<p>使用事件委托:</p>
<font style="color:#666">```html
<ul id="list">
  <li>条目1</li>
  <li>条目2</li>
  <li>条目3</li>
</ul>
```</font>
<font style="color:#666">```javascript
document.getElementById('list').addEventListener('click', (e) => {
  if (e.target.tagName === 'LI') {
    console.log('点击了:', e.target.textContent);
  }
});
```</font>
<p>只需要一个事件监听器,就能处理所有li的点击。e.target指向实际被点击的元素,通过判断可以精确响应。</p>
<p>这种做法减少了DOM操作和内存占用,也自动支持动态添加的元素。</p>

<H3>阻止事件传播与默认行为</H3>
<p>有时需要中断冒泡或捕获流程。可以使用以下方法:</p>
<ul>
  <li><strong>e.stopPropagation()</strong>:阻止事件继续向上冒泡或向下捕获</li>
  <li><strong>e.stopImmediatePropagation()</strong>:除了阻止传播,还阻止当前元素上其他同类型监听器执行</li>
  <li><strong>e.preventDefault()</strong>:阻止元素的默认行为(如链接跳转、表单提交)</li>
</ul>
<p>例如,防止外层div响应点击:</p>
<font style="color:#666">```javascript
document.getElementById('inner').addEventListener('click', (e) => {
  e.stopPropagation();
  console.log('inner clicked, no bubble');
});
```</font>
<p>这时点击inner,outer的事件不会被触发。</p>

<p>基本上就这些。掌握事件的三个阶段和委托机制,能让事件处理更灵活、高效。实际开发中,冒泡用得最多,委托是优化关键,而捕获则适用于特定控制场景。</p>

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
console接口是干嘛的
console接口是干嘛的

console接口是一种用于在计算机命令行或浏览器开发工具中输出信息的工具,提供了一种简单的方式来记录和查看应用程序的输出结果和调试信息。本专题为大家提供console接口相关的各种文章、以及下载和课程。

756

2023.08.08

console.log是什么
console.log是什么

console.log 是 javascript 函数,用于在浏览器控制台中输出信息,便于调试和故障排除。想了解更多console.log的相关内容,可以阅读本专题下面的文章。

5203

2024.05.29

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

20

2026.09.21

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

0

2026.09.21

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

0

2026.09.21

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

0

2026.09.21

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

0

2026.09.21

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

40

2026.09.20

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

0

2026.09.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 11.9万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn