JavaScript 基础知识-事件气泡,事件捕捉

这里要来补充一个小知识,在 .addEventListener() 这个事件监听的方法,还有第三个参数,只是没有设定时,预设会是 false
即一个元素的点击事件正常会如下:

el.addEventListener('click',function(){    alert('Hello');},false);

而这个第三个参数到底有什么用途呢?
当我们今天的 HTML 架构如下:

<body class="body">    <div class="box"></div></body>

然后给一下 .box 一些样式

.box{    width: 150px;    height: 150px;    background: black;}

此时,应该会有一个黑色的正方形在页面上
这时候来设置 .box.body 的点击事件

var elBox = document.querySelector('.box');elBox.addEventListener('click',function(){    alert('box');},false);var elBody = document.querySelector('.body');elBody.addEventListener('click',function(){    alert('body');},false);

而当我们点击黑色正方形的时候,会发生什么事情?
这时候会先弹跳视窗显示 box 再弹跳视窗显示 body

当第三个参数为 false,元素之间彼此重叠且都有设定事件时,会由指定元素往外层扩散出去
若为 true,则反之:

var elBox = document.querySelector('.box');elBox.addEventListener('click',function(){    alert('box');},true);var elBody = document.querySelector('.body');elBody.addEventListener('click',function(){    alert('body');},true);

这时候反而会先弹跳视窗显示 body 再弹跳视窗显示 box,会由最外层的元素一层一层往内到指定的元素

而对于上述的两种现象,分别有各自的名字
当为 false 时,叫做事件冒泡,因为就像气泡一样,一层一层往上扩散
当为 true 时,叫做事件捕捉,就像在一大片空地上寻找指定的猎物

目前还没有实用到的机会,但希望这个小知识能补充给大家 http://img2.58codes.com/2024/emoticon01.gif

另外,如果元素彼此重叠,不想执行事件冒泡或者事件捕捉的时候,可对于事件本身下一个指令,如下:

var elBox = document.querySelector('.box');elBox.addEventListener('click',function(e){    e.stopPropagation();    alert('box');},false);

关键在于 function 内有带一个 e 参数,即是指事件本身,而 .stopPropagation() 就是去停止上述的两种现象


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章