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 的唯一、最大区别

相关推荐
小陈工11 分钟前
Python Web开发入门(十一):RESTful API设计原则与最佳实践——让你的API既优雅又好用
开发语言·前端·人工智能·后端·python·安全·restful
星空14 分钟前
前段--A_2--HTML属性标签
前端·html
三万棵雪松30 分钟前
【Linux 物联网网关主控系统-Web部分(一)】
linux·前端·嵌入式linux
摸鱼仙人~1 小时前
增量快照 vs 结构化共享:适用场景全解析
前端·vue.js
2301_771717211 小时前
Jackson的使用方法详解
java·服务器·前端
A923A1 小时前
【小兔鲜电商前台 | 项目笔记】第八天
前端·vue.js·笔记·项目·小兔鲜
DYuW5gBmH1 小时前
Chrome DevTools MCP 让 AI 无缝接管浏览器调试会话
前端·chrome·chrome devtools
qq12_8115175152 小时前
Java Web 影城会员管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
java·前端·mybatis
weixin199701080163 小时前
《中控网商品详情页前端性能优化实战》
前端·性能优化
wuhen_n3 小时前
LangChain Agents 实战:构建智能文件管理助手
前端·javascript·人工智能·langchain·ai编程