原文链接:http://caibaojian.com/javascript-stoppropagation-preventdefault.html

防止冒泡

w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true

stopPropagation也是事件对象(Event)的一个方法,作用是阻止目标元素的冒泡事件,但是会不阻止默认行为。什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次在它的父级元素中被触发 。stopPropagation就是阻止目标元素的事件冒泡到父级元素。如:·

<div id='div' onclick='alert("div");'>
<ul onclick='alert("ul");'>
<li onclick='alert("li");'>test</li>
</ul>
</div>

上面的代码,Demo如下,我们单击test时,会依次触发alert(“li”),alert(“ul”),alert(“div”),这就是事件冒泡。

  • 测试冒泡

阻止冒泡

//code from http://caibaojian.com/javascript-stoppropagation-preventdefault.html
window.event? window.event.cancelBubble = true : e.stopPropagation();
  • 停止冒泡

http://caibaojian.com/javascript-stoppropagation-preventdefault.html

    //得到事件
function getEvent(){
if(window.event) {return window.event;}
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor ==MouseEvent
|| arg0.constructor==KeyboardEvent)
||(typeof(arg0)=="object" && arg0.preventDefault
&& arg0.stopPropagation)){
return arg0;
}
}
func=func.caller;
}
return null;
}
//阻止冒泡
function cancelBubble()
{
var e=getEvent();
if(window.event){
//e.returnValue=false;//阻止自身行为
e.cancelBubble=true;//阻止冒泡
}else if(e.preventDefault){
//e.preventDefault();//阻止自身行为
e.stopPropagation();//阻止冒泡
}
}

来源:前端开发博客

最新文章

  1. WinCE小结
  2. 点我吧工作总结(技术篇) zookeeper
  3. iOS开发--二维码的扫描
  4. hbase-architecture
  5. 不可或缺 Windows Native (4) - C 语言: 预处理命令,输入,输出
  6. sql where 1=1
  7. 关于JSON的总结
  8. 68. Text Justification
  9. linux复制多个文件到文件夹
  10. Git协作流程(转)
  11. progID
  12. 2.关于Apache Spark
  13. OAuth2.0学习(1-12)开源的OAuth2.0项目和比较
  14. Oracle 中的SELECT 关键字(查询、检索)
  15. P1880 [NOI1995]石子合并(区间DP)
  16. 获取页面定位元素left top
  17. Django的rest_framework的分页组件源码分析
  18. Java之.jdk安装-Linux
  19. 一、ZooKeeper学习
  20. 两种方法设置nginx并发限制下面的白名单策略

热门文章

  1. SQL中group by后面的having中不能使用别名
  2. mysql安装报vcruntime140.dll缺失
  3. Java集合(0):概述
  4. maven 依赖原则
  5. 【HTML】常用的标签学习(2)
  6. PJzhang:在windows10中实现右键命令行快捷打开
  7. [转帖]国内拉取google kubernetes镜像
  8. [转帖]使用Grafana和Telegraf监视VMware ESXi的方法
  9. Codeforces Educational Codeforces Round 3 E. Minimum spanning tree for each edge 树上倍增
  10. php网络请求