博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用js冒泡实现点击空白处关闭弹窗
阅读量:6173 次
发布时间:2019-06-21

本文共 1552 字,大约阅读时间需要 5 分钟。

  1. 什么是事件冒泡?

如图:在一个对象上触发某类事件(比如单击onclick事件),这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。自下而上的去触发事件。

  1. 事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。

  1. html结构

<div class="screen" id="parent">

<div class="layer-screen">

<div class="screen-content">

<a class="filter-tag" href="void(0);">点击a标签a>

div>

div>

div>

 

4.Script

<script>

$(function(){

document.getElementById("parent").addEventListener("click",function(e){

alert("我是最外层");

});

$(".layer-screen").click(function(e){

alert("我是中间层");

});

$("a").click(function(e){

alert("我是a标签");

});

});

script>

 

5.执行结果

a) 点击a标签,弹出:我是a标签 → 我是中间层 → 我是最外层

b) 点击中间层,弹出:我是中间层 → 我是最外层

c) 点击最外层,弹出:我是最外层

 

6.通过阻止事件冒泡实现点击空白处关闭弹窗

id=”parent层作为屏蔽层,class="layer-screen"作为弹出层,给id=”parent即最外层添加关闭弹窗的方法,给中间层和a标签绑定click事件,通过event.停止事件的冒泡传递。

可以自己选择绑定事件时采用事件捕获还是事件冒泡,方法就是绑定事件时通过addEventListener函数,它有三个参数,第三个参数若是true,则表示采用事件捕获,若是false,则表示采用事件冒泡。默认为冒泡。

ele.addEventListener('click',doSomething2,true)

 

7.阻止事件冒泡后的function

示例:

//阻止事件冒泡

$("a").click(function(e){

alert("我是a标签");

e.stopPropagation();

});

 

8.执行结果

a) 点击a标签,弹出:我是a标签

b) 点击中间层,弹出:我是中间层

c) 点击最外层,弹出:我是最外层

 

9.在id=”parent层的绑定事件中添加关闭弹窗的方法即可。

10.事件捕获的测试

a标签设置id=”a”,给中间层设置id=“center”,修改参数为true

document.getElementById("parent").addEventListener("click",function(){

alert("我是最外层");

},true)

document.getElementById("center").addEventListener("click",function(){

alert("我是中间层");

},true)

document.getElementById("a").addEventListener("click",function(){

alert("我是a标签");

},true)

 

执行结果:

点击a标签,弹出: 我是最外层 → 我是中间层 → 我是a标签

即与事件捕获的执行顺序相反。

(将所有的点击事件参数都改为true才会出现该效果)

转载地址:http://uutba.baihongyu.com/

你可能感兴趣的文章
ucar-weex
查看>>
vuex 理解与应用
查看>>
ES6(3)-各种类型的扩展(数组、对象)
查看>>
mysql 分组
查看>>
Android JNI入门第三篇——jni头文件分析
查看>>
ubuntu server 10.4下NFS服务的配置
查看>>
nginx+php-FastCGI+mysql性能测试
查看>>
Openstack架构及基本概念理解
查看>>
默认路由
查看>>
CYQ.Data 轻量数据层之路 框架开源系列 索引
查看>>
zabbix(2)使用自带模板完成基本监控
查看>>
安装rrdtool出现的错误
查看>>
木马隐藏地点全搜查
查看>>
Subversion版本控制
查看>>
奇怪的打印纸盘故障
查看>>
hyperledger v1.0.5 区块链运维入门(一)
查看>>
Mybatis-mapper-xml-基础
查看>>
5. GC 调优(基础篇) - GC参考手册
查看>>
Windows 7 XP 模式颜色质量只有16位的解决
查看>>
SonicWall如何安全模式升级防火墙
查看>>