js事件流:捕获阶段和冒泡阶段

简介: js事件流:捕获阶段和冒泡阶段

事件流:

事件流包含三个阶段:

事件捕捉阶段:事件开始由顶层对象触发,然后逐级向下传播,直到目标元素;

处于目标阶段:处在绑定事件的元素上;

事件冒泡阶段:事件由具体的元素先接收,然后逐级向上传播,直到不具体的元素;

铺货阶段.png

通过代码示例说明:

<style>
  #a {
    width: 300px;
    height: 300px;
    background-color: #eeeeee;
  }
  #b {
    width: 200px;
    height: 200px;
    background-color: #666666;
  }
  #c {
    width: 100px;
    height: 100px;
    background-color: green;
  }
</style>

<div id="a">
  最外层的元素
  <div id="b">
    中间的元素
    <div id="c">
      最里面的元素
    </div>
  </div>
</div>

<script>
  const list = ["a", "b", "c"];

  for (let elementId of list) {
    document.getElementById(elementId).addEventListener(
      "click",
      function () {
        console.log("捕获阶段: ", this.firstChild.textContent.trim());
      },
      true
    );

    document.getElementById(elementId).addEventListener(
      "click",
      function () {
        console.log("冒泡阶段", this.firstChild.textContent.trim());
      },
      false
    );
  }
</script>

点击最里边的元素触发结果如下:

点击最里边的元素触发结果如下:.png

参考

  1. JavaScript事件委托与事件冒泡
  2. HTML DOM 元素对象
            </div>
目录
相关文章
|
5月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
42 2
|
2月前
|
JavaScript 前端开发
JavaScript 事件流
JavaScript 事件流
26 1
|
2月前
|
设计模式 前端开发 JavaScript
javascript 异常问题之Promise的未处理异常如何捕获
javascript 异常问题之Promise的未处理异常如何捕获
|
2月前
|
前端开发 JavaScript
javascript 异常问题之Promise异常如何捕获
javascript 异常问题之Promise异常如何捕获
|
3月前
|
JavaScript CDN
js 捕获异常
js 捕获异常
25 1
|
3月前
|
JavaScript
js 捕获 await 的报错
js 捕获 await 的报错
21 1
|
3月前
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
41 1
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
76 2
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
67 4