【前端每天一题】🔥第7题 事件冒泡与事件捕获 - 前端高频面试题

这是前端高频面试题的详细版 + 速记卡版,可以直接用在面试里。

第 7 题:事件冒泡和事件捕获的区别?如何阻止事件冒泡?如何阻止默认行为?


一、事件冒泡(Event Bubbling)是什么?

事件从 最内层元素(target) 一直向 外层父级元素 传播,直到最顶层(document)。

传播顺序:

javascript 复制代码
target → parent → document

示例:

HTML:

html 复制代码
<div id="outer">
  <div id="inner"></div>
</div>

点击 inner 时,顺序是:

sql 复制代码
inner → outer → document

冒泡是浏览器默认的事件传播机制。


二、事件捕获(Event Capturing)是什么?

事件从 最外层(document)目标元素(target) 方向传播。

传播顺序:

javascript 复制代码
document → parent → target

三、浏览器完整的事件流阶段

事件流包含 三个阶段

markdown 复制代码
1. 捕获阶段(从外到内)
2. 目标阶段(target 本身)
3. 冒泡阶段(从内到外)

图示:

javascript 复制代码
document
   ↓ (捕获)
parent
   ↓
target
   ↑ (冒泡)
parent
   ↑
document

四、addEventListener 如何指定阶段?

语法:

javascript 复制代码
element.addEventListener(event, handler, useCapture)

第三个参数:

  • true → 捕获阶段执行
  • false → 冒泡阶段执行(默认)

示例:

javascript 复制代码
div.addEventListener('click', handler, true)  // 捕获
div.addEventListener('click', handler, false) // 冒泡

五、如何阻止事件冒泡?

方式 1:标准方法(推荐)

javascript 复制代码
event.stopPropagation()

方式 2:阻止所有传播(包括捕获 + 冒泡)

javascript 复制代码
event.stopImmediatePropagation()

⚠️ 并且会阻止"同一元素上后续绑定的回调函数"。

🚫 重要说明:return false 并不会阻止冒泡

原生 DOM 中:

javascript 复制代码
return false

只能阻止默认行为,不会阻止冒泡。

(除非在 jQuery 中)


六、如何阻止默认行为?

方法 1:标准方法

javascript 复制代码
event.preventDefault()

方法 2:在标签内直接 return false(只阻止默认行为)

html 复制代码
<a href="#" onclick="return false">点击</a>

方法 3:表单中阻止提交

javascript 复制代码
form.addEventListener("submit", e => e.preventDefault())

七、快速对比总结表

行为 方法 作用
阻止冒泡 event.stopPropagation() 阻止事件向父级继续冒泡
阻止所有传播 event.stopImmediatePropagation() 同节点后续事件也不再触发
阻止默认行为 event.preventDefault() 阻止浏览器的默认动作(跳转、滚动、提交等)
return false 部分情况下等于 preventDefault 原生不会阻止冒泡

速记卡(10 秒复习版)

🔶 捕获:从外到内

document → ... → target

🔶 冒泡:从内到外

target → ... → document

🔶 阻止冒泡

event.stopPropagation()

🔶 阻止所有传播(包括同级绑定事件)

event.stopImmediatePropagation()

🔶 阻止默认行为

event.preventDefault()

相关推荐
恋猫de小郭1 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
崔庆才丨静觅8 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60619 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了9 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅9 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅9 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅10 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment10 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅10 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端