preventDefault、stopPropagation 、stopImmediatePropagation 区别

1. event.preventDefault()

作用:阻止浏览器默认行为****和事件传播无关!

常见默认行为:

  • a 标签跳转
  • form 表单提交
  • 鼠标右键弹出菜单
  • 输入框输入文字
  • 单选 / 复选框勾选

例子:

javascript 复制代码
document.querySelector('a').addEventListener('click', (e) => {
  e.preventDefault(); // 不跳转,但事件照样会冒泡!
});

2. event.stopPropagation()

**作用:阻止事件冒泡(也阻止捕获)**但:不影响当前元素自身绑定的多个事件

html 复制代码
<div id="parent">
  <div id="child">点击我</div>
</div>
javascript 复制代码
child.addEventListener('click', (e) => {
  e.stopPropagation(); // 事件不会传到 parent
});

// 给 child 再绑一个点击
child.addEventListener('click', () => {
  console.log('我依然会执行!'); // ✅ 会执行
});

特点:

  • 只拦向外冒泡
  • 不拦自己身上的其他同事件

3. event.stopImmediatePropagation()

作用:

  1. 阻止事件冒泡(和 stopPropagation 一样)
  2. 立刻停止当前元素后续绑定的同类型事件

还是上面的例子:

javascript 复制代码
child.addEventListener('click', (e) => {
  e.stopImmediatePropagation();
  console.log('第一个事件');
});

// 这个不会执行了!
child.addEventListener('click', () => {
  console.log('第二个事件'); // ❌ 不执行
});

这就是它和 stopPropagation 的唯一、最大区别。

相关推荐
独孤九剑打醒他12 分钟前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程
mantou13243 分钟前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端
默_笙43 分钟前
🍕 一个主编、三个工种、两本手册:搭一支 AI 调研队
前端·javascript
纸片人1 小时前
Blender 建模 + Three.js 展示:和 AI 一起做一个光储充超充站数字孪生大屏
前端
智能直播1 小时前
网络RTMP拉流不卡顿、声音不同步?一文讲透缓冲区、时间戳与MEDAI V2实战调优
前端
第七页独白1 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库
纸片人1 小时前
只用 three.js + OpenStreetMap,手搓一个「成都城市 3D」数据大屏
前端
星若生辉1 小时前
Hugo 静态站点搭建|从本地调试到上线部署实操指南
前端
沐浴露z1 小时前
Agent 响应延迟过高?从工具治理角度提供两条思路
前端·网络
CappuccinoRose1 小时前
FormData数据处理
开发语言·前端·javascript·表单数据