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中的变量使用说明
May 18 Javascript
Json对象替换字符串占位符实现代码
Nov 17 Javascript
JS基础之undefined与null的区别分析
Aug 08 Javascript
node.js不得不说的12点内容
Jul 14 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
Jun 26 Javascript
JS实现鼠标移上去显示图片或微信二维码
Dec 14 Javascript
微信小程序日期时间选择器使用方法
Feb 01 Javascript
vue 中滚动条始终定位在底部的方法
Sep 03 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
Dec 25 Javascript
微信小程序仿抖音短视频切换效果的实例代码
Jun 24 Javascript
VUE使用axios调用后台API接口的方法
Aug 03 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中的串行化变量和序列化对象
2006/09/05 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
yii上传文件或图片实例
2014/04/01 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
Smarty模板变量与调节器实例详解
2019/07/20 PHP
Mootools 1.2教程 排序类和方法简介
2009/09/15 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
详解vuex的简单使用
2018/03/12 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
Python骚操作之动态定义函数
2019/03/26 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
python中id函数运行方式
2020/07/03 Python
python实现简单的五子棋游戏
2020/09/01 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
专营店会计助理岗位职责
2013/11/29 职场文书
ktv好的活动方案
2014/08/17 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
三严三实心得体会范文
2014/10/13 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
公司开会通知
2015/04/20 职场文书
严以律己学习心得体会
2016/01/13 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
python异步的ASGI与Fast Api实现
2021/07/16 Python
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技