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 相关文章推荐
offsetParent 算法分析
Apr 05 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
May 07 Javascript
javaScript的函数对象的声明详解
Feb 06 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
Nov 30 Javascript
JS使用单链表统计英语单词出现次数
Jun 16 Javascript
Bootstrap select下拉联动(jQuery cxselect)
Jan 04 Javascript
js注册时输入合法性验证方法
Oct 21 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
Aug 08 Javascript
原生JS实现无缝轮播图片
Jun 24 Javascript
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
制作特殊字的脚本
2006/06/26 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
ES6知识点整理之函数对象参数默认值及其解构应用示例
2019/04/17 Javascript
Python实现多行注释的另类方法
2014/08/22 Python
pygame学习笔记(4):声音控制
2015/04/15 Python
python中kmeans聚类实现代码
2018/02/23 Python
Python处理CSV与List的转换方法
2018/04/19 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
Python使用pyautocad+openpyxl处理cad文件示例
2019/07/11 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
Python的in,is和id函数代码实例
2020/04/18 Python
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
EJB实例的生命周期
2016/10/28 面试题
迟到检讨书400字
2014/01/13 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技