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实时获取系统当前时间实例代码
Jun 28 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
js 立即调用的函数表达式如何写
Jan 12 Javascript
自己动手写的javascript前端等待控件
Oct 30 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
Mar 25 Javascript
Node.js Streams文件读写操作详解
Jul 04 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
js禁止浏览器页面后退功能的实例(推荐)
Sep 01 Javascript
基于vue.js无缝滚动效果
Jan 25 Javascript
实例讲解React 组件生命周期
Jul 08 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(视频)Http下载
2006/12/12 PHP
php 表单数据的获取代码
2009/03/10 PHP
php自定义函数之递归删除文件及目录
2010/08/08 PHP
使用迭代器 遍历文件信息的详解
2013/06/08 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
PHP7 标准库修改
2021/03/09 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
javascript globalStorage类代码
2009/06/04 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
Django基础之Model操作步骤(介绍)
2017/05/27 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
2018/07/11 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
python实现求特征选择的信息增益
2018/12/18 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
大学毕业生通用自荐信范文
2013/10/31 职场文书
校企合作协议书
2014/04/16 职场文书
大班幼儿评语大全
2014/04/30 职场文书
小学学校评估方案
2014/06/08 职场文书
超市周年庆活动方案
2014/08/16 职场文书
师范生小学见习总结
2015/06/23 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
Python Flask实现进度条
2022/05/11 Python