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
相关推荐
天天进步2015几秒前
Java全栈项目--校园快递管理与配送系统(5)
java·javascript·vue.js
这里有鱼汤1 分钟前
Python 跨平台路径处理:最优解来了!
前端·后端·python
SailingCoder2 分钟前
npm ERR! CXX(target) Release/obj.target/deasync/src/deasync.o
前端·npm·node.js
初见_Dream17 分钟前
Android 文件选择器
android·java·开发语言
dot to one21 分钟前
深入理解C++面向对象特性之一 多态
c语言·开发语言·c++·visual studio
熊熊饲养员25 分钟前
【简单理解什么是简单工厂、工厂方法与抽象工厂模式】
java·开发语言·抽象工厂模式
念九_ysl27 分钟前
使用 Vue 快速集成 FullCalendar 日历组件教程
前端·javascript·vue.js
钢板兽33 分钟前
Java常见的23种设计模式
java·开发语言·设计模式
Pasregret36 分钟前
01-JVM 内存模型与 GC 原理
java·开发语言·jvm·后端
造夢先森38 分钟前
SpringAI+MCP协议 实战
前端·javascript·easyui