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 相关文章推荐
优秀js开源框架-jQuery使用手册(1)
Mar 10 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
Oct 11 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
Apr 20 Javascript
alert中断settimeout计时功能
Jul 26 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
jquery等待效果示例
May 01 Javascript
微信小程序实现图片预加载组件
Jan 18 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
基于vue.js实现分页查询功能
Dec 29 Javascript
浅谈layui数据表格判断问题(加入表单元素),设置单元格样式
Oct 26 Javascript
node静态服务器实现静态读取文件或文件夹
Dec 03 Javascript
node+vue实现文件上传功能
May 28 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连mysql和oracle数据库性能比较
2006/10/09 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
2010/02/21 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
jQuery实现的简洁下拉菜单导航效果代码
2015/08/26 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
js实现(全选)多选按钮的方法【附实例】
2016/03/30 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
JS与SQL方式随机生成高强度密码示例
2018/12/29 Javascript
vue实现分页栏效果
2019/06/28 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
Python新手们容易犯的几个错误总结
2017/04/01 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
自荐信封面
2013/12/04 职场文书
幼儿园教学随笔感言
2014/02/23 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
煤矿安全保证书
2015/02/27 职场文书
Python合并多张图片成PDF
2021/06/09 Python