JS基础---html中事件冒泡和捕获
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JS基础---html中事件冒泡和捕获,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2665字,纯文字阅读大概需要4分钟。
内容图文
![JS基础---html中事件冒泡和捕获](/upload/InfoBanner/zyjiaocheng/992/126dd37ec85f48d991b89aee41a6ee72.jpg)
目录
时间冒泡与捕获
概念
一般的,事件分为三个阶段:捕获阶段、目标阶段和冒泡阶段。
(1)捕获阶段(Capture Phase)
事件的第一个阶段是捕获阶段。事件从文档的根节点流向目标对象节点。途中经过各个层次的DOM节点,并在各节点上触发捕获事件,直到到达事件的目标节点。捕获阶段的主要任务是建立传播路径,在冒泡阶段,事件会通过这个路径回溯到文档跟节点。
(2)目标阶段(Target Phase)
当事件到达目标节点的,事件就进入了目标阶段。事件在目标节点上被触发,然后会逆向回流,直到传播至最外层的文档节点。
(3)冒泡阶段(Bubble Phase)
事件在目标元素上触发后,并不在这个元素上终止。它会随着DOM树一层层向上冒泡,回溯到根节点。
冒泡过程非常有用。它将我们从对特定元素的事件监听中释放出来,如果没有事件冒泡,我们需要监听很多不同的元素来确保捕获到想要的事件。
作者:韩宝亿
链接:https://www.jianshu.com/p/8311f782f70d
来源:简书
举例代码
冒泡模拟
<html>
<head>
</head>
<body>
<div id="content1">
<ul id="ul">
<li>
<a>
点击
</a>
</li>
</ul>
</div>
</body>
<script>
function getNode(name) {
return document.getElementsByTagName(name)[0]
}
const top1 = getNode('div')
const ul1 = getNode('ul')
const li1 = getNode('li')
const a1 = getNode('a');
//get the node
top1.addEventListener('click', (e) => {
console.log("div");
})
ul1.addEventListener('click', (e) => {
console.log("ul");
})
li1.addEventListener('click', (e) => {
console.log("li");
})
a1.addEventListener('click', (e) => {
console.log("a");
})
//add function
</script>
</html>
模拟结果
该代码模拟了冒泡的情况,即事件会从触发的节点一直向外冒泡,直到回溯到根节点。
模拟的情况如下图,由根节点先触发,再一层层向外传递。
捕获模拟
代码如下:
基本同上,添加的事件修改参数即可
<html>
<head>
</head>
<body>
<div id="content1">
<ul id="ul">
<li>
<a>
点击
</a>
</li>
</ul>
</div>
</body>
<script>
function getNode(name) {
return document.getElementsByTagName(name)[0]
}
const top1 = getNode('div')
const ul1 = getNode('ul')
const li1 = getNode('li')
const a1 = getNode('a');
top1.addEventListener('click', (e) => {
console.log("div");
},true)
ul1.addEventListener('click', (e) => {
console.log("ul");
},true)
li1.addEventListener('click', (e) => {
console.log("li");
},true)
a1.addEventListener('click', (e) => {
console.log("a");
},true)
</script>
</html>
模拟结果如下
可以看见,捕获阶段,是从根节点向子节点的。
addEventListener函数补充
语法
element.addEventListener(event, function, useCapture);
第一个参数是事件的类型 (如 “click” 或 “mousedown”).
第二个参数是事件触发后调用的函数。
第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。
参考链接如下:
作者:韩宝亿
链接:https://www.jianshu.com/p/8311f782f70d
内容总结
以上是互联网集市为您收集整理的JS基础---html中事件冒泡和捕获全部内容,希望文章能够帮你解决JS基础---html中事件冒泡和捕获所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。