JavaScript中使用stopPropagation函数停止事件传播例子


Posted in Javascript onAugust 27, 2014

JS中的事件默认是冒泡方式,逐层往上传播,可以通过stopPropagation()函数停止事件在DOM层次中的传播。如以下例子:

HTML代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>stopPropagation()使用 - 琼台博客</title>
</head>
<body>
<button>button</button>
</body>
</html>
[/code] 
没有加stopPropagation()
[code]
var button = document.getElementsByTagName('button')[0];
button.onclick=function(event){
  alert('button click');
};
 
document.body.onclick=function(event){
  alert('body click');
}

DOM逐层往上传播,所以单击button按钮也传播到了body层,于是body层的click也响应了。结果弹出两个警告框,分别是button与body。

加了stopPropagation()

var button = document.getElementsByTagName('button')[0];
button.onclick=function(event){
  alert('button click');
  // 停止DOM事件层次传播
  event.stopPropagation();
};
 
document.body.onclick=function(event){
  alert('body click');
}

在button的单击事件处理函数中使用了stopPropagation()停止事件传播函数,所以在弹出来自button单击事件的警告框以后就传播不到body,也就不会再次弹出body的警告框,结果只谈一次警告框。

好多童鞋在写JS的时候,往往忽视了DOM事件逐层往上传播的特性,导致程序出现异常。如果需要了解更深入的知识可以找找有关JS事件冒泡的资料看看。

Javascript 相关文章推荐
javascript 获取元素位置的快速方法 getBoundingClientRect()
Nov 26 Javascript
jQuery Ajax使用 全解析
Dec 15 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
Nov 17 Javascript
Javascript 多浏览器兼容总结(实战经验)
Oct 30 Javascript
js/jquery解析json和数组格式的方法详解
Jan 09 Javascript
js给页面加style无效果的解决方法
Jan 20 Javascript
jQuery分组选择器用法实例
Dec 23 Javascript
JavaScript计划任务后台运行的方法
Dec 18 Javascript
原生JS实现图片轮播与淡入效果的简单实例
Aug 21 Javascript
详解angularJs中关于ng-class的三种使用方式说明
Jun 02 Javascript
JS实现评价的星星功能
Aug 20 Javascript
js实现指定时间倒计时效果
Aug 26 Javascript
JavaScript闭包函数访问外部变量的方法
Aug 27 #Javascript
JavaScript中switch判断容易犯错的一个细节
Aug 27 #Javascript
JavaScript中使用arguments获得函数传参个数实例
Aug 27 #Javascript
JavaScript中输出标签的方法
Aug 27 #Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
Aug 27 #Javascript
JavaScript实现的使用键盘控制人物走动实例
Aug 27 #Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 #Javascript
You might like
PHP 获取文件权限函数介绍
2013/07/11 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHP判断远程图片是否存在的几种方法
2014/05/04 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
集成vue到jquery/bootstrap项目的方法
2018/02/10 jQuery
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
js实现简易点击切换显示或隐藏
2020/11/29 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
使用Python下载Bing图片(代码)
2013/11/07 Python
python基础教程之缩进介绍
2014/08/29 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
Python字符串格式化输出代码实例
2019/11/22 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
Tensorflow累加的实现案例
2020/02/05 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
Stokke美国官方网店:高级儿童家具、推车、汽车座椅和配件
2020/06/06 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
公务员的自我鉴定
2013/10/26 职场文书
农村改厕实施方案
2014/03/22 职场文书
酒店端午节活动方案
2014/08/26 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang