js 事件流的三个阶段

JavaScript事件流分为三个阶段:事件捕获阶段、目标阶段和事件冒泡阶段。在事件处理过程中,事件会在文档树中从根节点向目标节点传播,然后再从目标节点向根节点传播。

  1. 事件捕获阶段(Event Capturing Phase):事件首先从根节点开始,沿着DOM树向目标节点传播。在此过程中,事件会经过每个节点,直到达到目标节点。

  2. 目标阶段(Event Target Phase):事件已经达到目标节点。

  3. 事件冒泡阶段(Event Bubbling Phase):事件从目标节点开始反向传播,沿着DOM树向根节点传播。

下面是事件流的代码示例:

html 复制代码
<!DOCTYPE html>
<html>
<body>

<div id="parent">
  <div id="child">
    Click Me
  </div>
</div>

<script>
// 事件捕获阶段
document.getElementById("parent").addEventListener("click", function() {
  console.log("parent capturing");
}, true);

document.getElementById("child").addEventListener("click", function() {
  console.log("child capturing");
}, true);

// 目标阶段
document.getElementById("parent").addEventListener("click", function() {
  console.log("parent target");
}, false);

document.getElementById("child").addEventListener("click", function() {
  console.log("child target");
}, false);

// 事件冒泡阶段
document.getElementById("parent").addEventListener("click", function() {
  console.log("parent bubbling");
}, false);

document.getElementById("child").addEventListener("click", function() {
  console.log("child bubbling");
}, false);
</script>

</body>
</html>

在以上示例中,当点击"Click Me"按钮时,控制台将会打印以下结果:

复制代码
parent capturing
child capturing
child target
parent target
parent bubbling
相关推荐
basestone3 小时前
🚀 从重复 CRUD 到工程化封装:我是如何设计 useTableList 统一列表逻辑的
javascript·react.js·ant design
pas1363 小时前
25-mini-vue fragment & Text
前端·javascript·vue.js
何贤3 小时前
2025 年终回顾:25 岁,从“混吃等死”到别人眼中的“技术专家”
前端·程序员·年终总结
软件开发技术深度爱好者3 小时前
JavaScript的p5.js库使用介绍
javascript·html
冴羽3 小时前
CSS 新特性!瀑布流布局的终极解决方案
前端·javascript·css
满天星辰4 小时前
Vue 响应式原理深度解析
前端·vue.js
泡泡以安4 小时前
【爬虫教程】第7章:现代浏览器渲染引擎原理(Chromium/V8)
java·开发语言·爬虫
亮子AI4 小时前
【Python】比较两个cli库:Click vs Typer
开发语言·python
月明长歌4 小时前
Java进程与线程的区别以及线程状态总结
java·开发语言
怪可爱的地球人4 小时前
em,rem,px,rpx单位换算,你弄懂了吗?
前端