当前位置:首页 > JavaScript

js实现点击冒泡

2026-02-02 15:47:19JavaScript

事件冒泡机制

事件冒泡是DOM事件传播的机制之一,当元素触发事件时,事件会从触发元素开始,逐级向上层父元素传播,直到document对象。例如,点击子元素时,父元素上的同类事件也会被触发。

阻止事件冒泡的方法

在JavaScript中,可通过stopPropagation()方法阻止事件继续向上冒泡:

js实现点击冒泡

element.addEventListener('click', function(event) {
  event.stopPropagation(); // 阻止事件冒泡
  // 其他逻辑
});

实际应用示例

假设HTML结构如下:

<div id="parent">
  <button id="child">点击</button>
</div>

允许冒泡的情况(默认行为):

js实现点击冒泡

document.getElementById('parent').addEventListener('click', () => {
  console.log('父元素被触发');
});

document.getElementById('child').addEventListener('click', () => {
  console.log('子元素被触发');
});
// 点击按钮会依次输出:子元素被触发 → 父元素被触发

阻止冒泡的情况

document.getElementById('child').addEventListener('click', (event) => {
  event.stopPropagation();
  console.log('子元素被触发,但阻止冒泡');
});
// 点击按钮仅输出:子元素被触发,但阻止冒泡

事件捕获与冒泡的关系

事件传播分为捕获阶段(从上到下)和冒泡阶段(从下到上)。若需要在捕获阶段拦截事件,可设置addEventListener的第三个参数为true

element.addEventListener('click', handler, true);

注意事项

  • 阻止冒泡可能影响依赖事件冒泡的全局监听逻辑。
  • 某些事件(如focus)默认不冒泡,需使用捕获阶段或替代方案。
  • 结合event.preventDefault()可同时阻止默认行为和冒泡。

标签: js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promis…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的cur…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1;…