JavaScript实现事件的中断传播和行为阻止方法示例


Posted in Javascript onJanuary 20, 2017

事件传播

MicroSoft的设计是当事件在元素上触发时,该事件将接着在该节点的父节点触发,以此类推,事件一直沿着DOM树向上传播,直到到达顶层对象document元素。这种自底向上的事件传播方式称为“事件冒泡”,也就是事件传播。

如何中断事件的传播?

stopPropagation() w3c取消冒泡

cancleBubble = true IE取消冒泡

取消事件默认效果:

returnValue = false IE 取消事件效果

defaultPrevent() w3c取消事件效果

<div id='aa'>
 <div id='bb'>
 <div id ='cc'></div>
 </div>
</div>
#aa{
 width: 600px;
 height: 600px;
 background: gray;
}
#bb{
 width: 400px;
 height: 400px;
 background: green;
}
#cc{
 width: 200px;
 height: 200px;
 background: red;
}

捕捉写法停止传播 从最顶层开始往下

document.getElementById('aa').addEventListener('click',function (ev){alert('aa');ev.stopPropagation();},true);// 结果捕捉到aa 加true 由冒泡变为捕捉 从上到下
 document.getElementById('bb').addEventListener('click',function (){alert('bb')},true);
 document.getElementById('cc').addEventListener('click',function (){alert('cc')},true);

冒泡写法停止传播 从下往上

document.getElementById('aa').addEventListener('click',function (){alert('aa');});//加true 由冒泡变为捕捉 从上到下
 document.getElementById('bb').addEventListener('click',function (){alert('bb')});
 document.getElementById('cc').addEventListener('click',
 function (ev){
 alert('cc');
 ev.stopPropagation();
 // ev.cancleBubble = true;//IE下 取消冒泡方法
 }); //结果是冒出cc 停止传播
}

取消事件效果

returnValue = false //IE 取消事件效果

preventDefault() //w3c取消事件效果

document.getElementsByTagName('a')[0].onclick = function (ev){
 alert('点击');
 //达到事件结束的效果 但是函数还是往下运行
 //
 ev.preventDefault();
 alert('已经拦截');
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
javascript 触发事件列表 比较不错
Sep 03 Javascript
jQuery UI 应用不同Theme的办法
Sep 12 Javascript
Jquery动态改变图片IMG的src地址示例
Jun 25 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
理解javascript回调函数
Dec 28 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
每天一篇javascript学习小结(基础知识)
Nov 10 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
js实现分页功能
May 24 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
聊聊Vue.js的template编译的问题
Oct 09 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
Jan 19 #Javascript
BootStrap组件之进度条的基本用法
Jan 19 #Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 #Javascript
js实现符合国情的日期插件详解
Jan 19 #Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 #Javascript
原生JS和jQuery操作DOM对比总结
Jan 19 #Javascript
原生js实现电商侧边导航效果
Jan 19 #Javascript
You might like
我的论坛源代码(一)
2006/10/09 PHP
php下连接mssql2005的代码
2011/01/17 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
JS的get和set使用示例
2014/02/20 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
node.js中的fs.rmdirSync方法使用说明
2014/12/16 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
koa源码中promise的解读
2018/11/13 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
js实现窗口全屏示例详解
2019/09/17 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
jquery实现拖拽小方块效果
2020/12/10 jQuery
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python读取txt内容写入xls格式excel中的方法
2018/10/11 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
Python网页解析器使用实例详解
2020/05/30 Python
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
主治医师岗位职责
2013/12/10 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
诚实守信演讲稿
2014/09/01 职场文书
教师工作决心书
2015/02/04 职场文书
宣传稿格式范文
2015/07/23 职场文书
写好求职信的技巧解密
2019/05/14 职场文书