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
相关推荐
EndingCoder37 分钟前
React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
前端·react.js·架构·前端框架
阿阳微客2 小时前
Steam 搬砖项目深度拆解:从抵触到真香的转型之路
前端·笔记·学习·游戏
德育处主任Pro2 小时前
『React』Fragment的用法及简写形式
前端·javascript·react.js
CodeBlossom3 小时前
javaweb -html -CSS
前端·javascript·html
CodeCraft Studio3 小时前
【案例分享】如何借助JS UI组件库DHTMLX Suite构建高效物联网IIoT平台
javascript·物联网·ui
朝新_3 小时前
【多线程初阶】阻塞队列 & 生产者消费者模型
java·开发语言·javaee
立莹Sir3 小时前
Calendar类日期设置进位问题
java·开发语言
打小就很皮...3 小时前
HBuilder 发行Android(apk包)全流程指南
前端·javascript·微信小程序
风逸hhh4 小时前
python打卡day46@浙大疏锦行
开发语言·python
火兮明兮4 小时前
Python训练第四十三天
开发语言·python