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 相关文章推荐
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
Nov 14 Javascript
jQuery ready函数滥用分析
Feb 16 Javascript
快速掌握Node.js事件驱动模型
Mar 21 Javascript
JS+Canvas绘制时钟效果
Aug 20 Javascript
浅谈jquery页面初始化的4种方式
Nov 27 Javascript
vue params、query传参使用详解
Sep 12 Javascript
Node.js创建HTTP文件服务器的使用示例
May 11 Javascript
JavaScript实现异步图像上传功能
Jul 12 Javascript
基于element-ui的rules中正则表达式
Sep 04 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
Sep 13 Javascript
微信小程序实现图片滚动效果示例
Dec 05 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
global.php
2006/12/09 PHP
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
2013/08/07 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
PHP 数组current和next用法分享
2015/03/05 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
浅谈Python的list中的选取范围
2018/11/12 Python
Python中按值来获取指定的键
2019/03/04 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Python celery原理及运行流程解析
2020/06/13 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
幼儿园秋游感想
2014/03/12 职场文书
世界名著读书笔记
2015/06/25 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
JavaScript控制台的更多功能
2021/04/28 Javascript
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android