事件传播是双向的(bidirectional), 先从DOM树的根元素(window)到事件目标元素(event target), 接着从事件事件目标元素回到DOM树的根元素. 整体可以分为下面三个阶段:

  • 从根元素到事件目标父元素: 称之为事件捕获阶段(event capture phase)
  • 事件目标自己: 称之为目标阶段(target phase)
  • 从目标父元素到根元素: 称之为事件冒泡阶段(event bubble phase)

  • Capture Phase

    • el.addEventListener(‘click’, listener, true)
    • Target Phase
  • Bubble Phase
    • el.addEventListener(‘click’, listener, false)
    • el.addEventListener(‘click’, listener) // 第三个参数默认是false

Note: 某些事件比如 blur, focus, load 不会在冒泡阶段(bubble phase)出现, 也就是说这些事件只会在捕获阶段(capture phase)被捕获, 因此在这些事件控制上, addEventListener 函数的第三个参数必须设定为 true 否则无法执行回调函数.

JS Event Propagation (bubbling and capture)相关推荐

  1. Node.js event loop 和 JS 浏览器环境下的事件循环的区别

    Node.js  event loop 和 JS 浏览器环境下的事件循环的区别: 1.线程与进程: JS 是单线程执行的,指的是一个进程里只有一个主线程,那到底什么是线程?什么是进程? 进程是 CPU ...

  2. Js Event Loop

    Js Event Loop 本文主要介绍 Node 中的事件循环 参考 官网 (什么是 Event Loop? - 阮一峰的网络日志 (ruanyifeng.com)) What is the Eve ...

  3. 彻底理解 JS Event Loop(浏览器环境)

    最近罗列了一些软件开发基础知识点,计划逐一的.彻底的理解每一个知识点,并为每个知识点写一篇详细的,图文并茂的文章.这篇是关于浏览器环境下 JS 的 Event Loop 机制(如有错误,欢迎指出). ...

  4. JS Event对象详解

    JS Event对象详解 参考资料: js添加事件和移除事件:addEventListener()与removeEventListener() Event 对象 Event 对象代表事件的状态,比如事 ...

  5. Day25 - Event Capture, Propagation, Bubbling and Once

    本文出自:春哥个人博客:http://www.liyuechun.org 作者:©黎跃春-追时间的人 简介:JavaScript30 是 Wes Bos 推出的一个 30 天挑战.项目免费提供了 30 ...

  6. JS Event handler example - event capture and bubble

    Created by Jerry Wang, last modified on Jun 06, 2015 source link: http://www.ido321.com/1570.html 这个 ...

  7. jsevent(js event对象)

    javascript event对象的具体功能是什么 event对象只在事件发生的过程中才有效(比如鼠标点击,键盘按下等). event对象用以表示事件的状态, 触发event对象的元素(event. ...

  8. IE8及其以下,特有js event对象坑

    简介: event 对象是 JavaScript 中一个非常重要的对象,用来表示当前事件.event 对象的属性和方法包含了当前事件的状态. 当前事件,是指正在发生的事件:状态,是与事件有关的性质,如 ...

  9. JavaScript: 最简单的事件代理(JS Event Proxy)原理代码

    打开 http://jsbin.com (JS练兵场),方便尝试使用案例代码. 假设有HTML <ul id="parent-list"><li id=" ...

最新文章

  1. c语言想调用函数怎么弄43,如果想要调用这个函数,还应该怎么写
  2. 存在即合理:基于云计算的EMR
  3. 数字图像处理实验(14):PROJECT 06-01,Web-Safe Colors
  4. 18春东师计算机应用基础,东师计算机应用基础18春在线作业31.docx
  5. arcgis将小于0的数值设置成0.01
  6. Dubbo管理端安装
  7. iOS vuforia 学习钻研(一)
  8. debian6 kvm安装虚拟机
  9. python 中参数*args, **kwargs
  10. 逆序链表--递归思路
  11. 易语言 钩子 (钩子HOOK与APIHOOK是不一样的)
  12. 从0开始html前端页面开发_CSS实现设置背景图自适应屏幕大小
  13. 备份手机相册----syncthing (一劳永逸式解决方案)
  14. Yank-Note笔记软件的37个特色功能,值得下载
  15. python游戏开发实战:行走系统之地图编辑器
  16. android 实现返回键执行home键方法
  17. has a default child route. When navigating to this named route 。。。。。报错
  18. 【前端必知】胶水(框架) Stencil.js
  19. 单片机C语言学习(菜鸟入门)
  20. 虚拟机配置网络代理服务器

热门文章

  1. 【NVMe2.0b 7】NVMe 基本队列数据结构
  2. ORAN C平面 Section Extension 8
  3. 青山~深入理解mysql
  4. mysql 字符集 表情_MySQL字符集(表情包)
  5. 全景制作教程:如何利用Pano2VR进行补天补地?
  6. 指数基金投资指南读书笔记
  7. 关于多个债权人申请执行同一被执行人的清偿顺序问题
  8. pyPDF2或pyPDF4做pdf页面提取出错
  9. android实现单词测试功能,android项目实战-背呗单词DEV07-单词测试实现(示例代码)...
  10. Abaqus应力结点数据导出与处理