博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 冒泡事件与解决冒泡事件
阅读量:4507 次
发布时间:2019-06-08

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

事件冒泡 :当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window 。

html代码:

my$("div1").οnclick=function () {    console.log(this.id);  };//div3 div2 div1  my$("div2").οnclick=function () {    console.log(this.id);  };//div2 div1  my$("div3").οnclick=function () {    console.log(this.id);  };//div1

代码很简单,就是三个父子关系的div,然后分别加了点击事件,当我们在div3里面点击的时候,会发现弹出了一次3,接着又弹出了2,最后又弹出了1,这说明点击的时候,不仅div3的事件被触发了,它的父级div2 与div1的点击事件也触发了,这种现象就叫做冒泡。

 

取消事件冒泡有两种方式:

1、标准的W3C 方式:e.stopPropagation(); 这里的stopPropagation是标准的事件对象的一个方法,调用即可(谷歌和火狐支持,IE不支持

my$("div3").οnclick=function (e) {    console.log(this.id);    e.stopPropagation();  };

2、非标准的IE方式:window.event.cancelBubble=true; 这里的cancelBubble是 IE事件对象的属性,设为true就可以了(IE特有的,谷歌支持,火狐不支持

my$("div2").οnclick=function () {    console.log(this.id);    window.event.cancelBubble=true;  };

 

为了兼容解决事件冒泡的方式:

function stopBubble(e) {      //如果提供了事件对象,则这是一个非IE浏览器      if (e && e.stopPropagation)        //因此它支持W3C的stopPropagation()方法        e.stopPropagation();      else        //否则,我们需要使用IE的方式来取消事件冒泡        window.event.cancelBubble = true;    }    my$("div2").onclick = function (e) {      console.log(this.id);      stopBubble(e)    };    my$("div3").onclick = function (e) {      console.log(this.id);      stopBubble(e)    };

 

 

转载于:https://www.cnblogs.com/wanguofeng/p/10573106.html

你可能感兴趣的文章
c#语言几种常见循环代码
查看>>
SQL多表连接查询(详细实例)
查看>>
Http中涉及到的知识点总结
查看>>
adb命令记录
查看>>
swift初学日志
查看>>
Eclipse上GIT插件_客户端配置
查看>>
JavaScript浏览器对象之二Document对象
查看>>
js 乘除算法 浮点 精度解决办法
查看>>
sqlserver2005版本的mdf文件,还没有log文件,
查看>>
错误“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”解决方案
查看>>
System x 服务器制作ServerGuide U盘安装Windows Server 2008 操作系统 --不格式化盘
查看>>
前端常见跨域解决方案(全)
查看>>
umi---className设置多个样式
查看>>
网页包抓取工具Fiddler工具简单设置
查看>>
周总结报告
查看>>
Selecting Courses POJ - 2239(我是沙雕吧 按时间点建边 || 匹配水题)
查看>>
Win+R指令(2)
查看>>
codeforces 578c - weekness and poorness - 三分
查看>>
数值微分方程
查看>>
动态规划--电路布线(circuit layout)
查看>>