addEventListener()中的第三个参数

更新时间:2023-06-20 22:48:23 阅读: 评论:0

addEventListener()中的第三个参数
昨天遇到⼀段js代码⾥⾯的addEventListener⽅法竟然有三个参数,去⾕歌搜了⼀下,觉得这个概念很有意思,值得总结⼀下写成博客。uCapture
addEventListener()中的第三个参数是Boolean类型的值,代表第⼆个参数handler是否在第⼀个参数Event的capture阶段使⽤。
事件(Event)在事件⽬标(EventTarget)中的顺序
当DOM元素之间有包含关系时,发⽣在其上的事件有两种顺序:
经济寿命
Capturing
Bubbling
Capturing就是从上往下:
| |
---------------| |-----------------
| element1    | |                |
|  -----------| |-----------    |
|  |element2  \ /          |    |
|  -------------------------    |
|        Event CAPTURING          |
-----------------------------------
这种情况下,事件发⽣后,注册在element1上的handler会先触发,注册在element2上的handler会后触发。
Bubbling就是从下往上:
/ \
---------------| |-----------------
| element1    | |                |嗷嗷待哺的读音
|  -----------| |-----------    |
|  |element2  | |          |    |
|  -------------------------    |
|        Event BUBBLING          |
-----------------------------------
这种情况下,事件发⽣后,注册在element2上的handler会先触发,注册在element1上的handler会后触发。
W3C标准中的事件顺序
| |  / \
-----------------| |--| |-----------------
| element1      | |  | |                |
|  -------------| |--| |-----------    |
|  |element2    \ /  | |          |    |
|  --------------------------------    |
03年属啥|        W3C event model                |
------------------------------------------
在w3c模型中,事件会先从上往下,到事件⽬标元素后,再从下往上,⼀直到最外⾯的元素。
塞多音字注音并组词代码实例
认为的英文<div id="parent">parent div红枣莲子粥
<div id="child">child div</div>
</div>
元宵节的作文400const parent = document.querySelector('#parent');
const child = document.querySelector('#child');
function first(){
alert('first');
}
function cond(){
alert('cond');
}
parent.addEventListener('click', cond,fal);
child.addEventListener('click', first);
点击child元素,会先弹出first,然后弹出cond。我们来分析⼀下为什么会这样:
三年级作文向日葵click事件在child元素发⽣后,第⼀步是capturing阶段,先从上往下寻找child元素的锚定元素(Ancestor Element)中是否有可以触发的handler,如果uCapture参数是true的话就会在此阶段触发,结果发现没有可以触发的handler。
click事件到达child元素后触发first⽅法,然后开始bubbling阶段,到达parent元素时发现有⽤于此阶段的handler,触发cond⽅法。如果我们把代码改⼀下,变成:
parent.addEventListener('click', cond,true);
child.addEventListener('click', first);
点击child元素,会先弹出cond,然后弹出first。分析过程和前⾯很类似:
click事件在child元素发⽣后,第⼀步是capturing阶段,先从上往下寻找child元素的锚定元素(Ancestor Element)中是否有可以触发的handler,发现可以触发cond。
click事件到达child元素后触发first⽅法,然后开始bubbling阶段,到达parent元素时发现有⽤于此阶段的handler,没有发现可以触发的handler。

本文发布于:2023-06-20 22:48:23,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1001584.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:元素   事件   触发   到达   阶段   发现   代码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图