分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

JS中的事件冒泡和事件捕获

发布时间:2023-09-06 01:41责任编辑:傅花花关键词:冒泡

事件捕获阶段:事件从最上一级标签开始往下查找,直到捕获到事件目标(target)。

事件冒泡阶段:事件从事件目标(target)开始,往上冒泡直到页面的最上一级标签。

用图示表示如下:

1、冒泡事件:

事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。通俗来讲就是,就是当设定了多个div的嵌套时;即建立了父子关系,当父div与子div共同加入了onclick事件时,当触发了子div的onclick事件后,子div进行相应的js操作,但是父div的onclick事件同样会被触发。 

<html lang="en"><head> ???<meta charset="UTF-8"> ???<title>测试事件冒泡</title> ???<style> ???????div{padding:40px;} ???????#div1{background: #00B83F;} ???????#div2{background: #2a6496} ???????#div3{background: #93C3CF} ???</style> ???<script> ???window.onload=function (){ ???????var odiv1=document.getElementById("div1"); ???????var odiv2=document.getElementById("div2"); ???????var odiv3=document.getElementById("div3"); ???????function fdiv1(){ ???????????alert("div1"); ???????} ???????function fdiv2(){ ???????????alert("div2"); ???????} ???????function fdiv3(ev){ ????????????alert("div3"); ???????} ???????odiv1.onclick=fdiv1; ???????odiv2.onclick=fdiv2; ???????odiv3.onclick=fdiv3; ???} ???</script></head><body> ?<div id="div1"> ?????<div id="div2"> ?????????<div id="div3"></div> ?????</div> ?</div></body></html> 

测试结果:点击div3时,依次弹出div3,div2,div1

2.阻止事件冒泡:

给div3的绑定事件改为。ev.canceBubble=true;

 ?function fdiv3(ev){ ???????????var en=ev || event; ???????????en.cancelBubble=true; ???????????alert("div3"); ???????}

 测试结果:点击div3时,只弹出div3

3、事件捕获

从顶层元素到目标元素或者从目标元素到顶层元素,和事件冒泡是一个相反的过程。事件从最不精确的对象(document 对象)开始触发,然后到最精确(也可以在窗口级别捕获事件,不过必须由开发人员特别指定)。

代码更改如下:

<script> ???window.onload=function (){ ???????var odiv1=document.getElementById("div1"); ???????var odiv2=document.getElementById("div2"); ???????var odiv3=document.getElementById("div3"); ????????odiv1.addEventListener("click",function(){ ???????????alert("div1"); ???????},true); ???????odiv2.addEventListener("click",function(){ ???????????alert("div2"); ???????},true); ???????odiv3.addEventListener("click",function(){ ???????????alert("div3"); ???????},true); ???}</script>

 测试结果:点击div3时,依次弹出div1,div2,div3

结论:绑定事件时通过addEventListener函数,它有三个参数,第三个参数若是true,则表示采用事件捕获,若是false,则表示采用事件冒泡。

JS中的事件冒泡和事件捕获

原文地址:https://www.cnblogs.com/hfxm/p/8416586.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved