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 相关文章推荐
关于图片按比例自适应缩放的js代码
Oct 30 Javascript
javascript 函数声明与函数表达式的区别介绍
Oct 05 Javascript
js实现照片墙功能实例
Feb 05 Javascript
js实现图片从左往右渐变切换效果的方法
Feb 06 Javascript
JS组件Bootstrap Table使用方法详解
Feb 02 Javascript
Bootstrap学习笔记之环境配置(1)
Dec 07 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
详解关于react-redux中的connect用法介绍及原理解析
Sep 11 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
Feb 05 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
js实现小球在页面规定的区域运动
Jun 16 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 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
php db类库进行数据库操作
2009/03/19 PHP
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
javascript eval函数深入认识
2009/02/21 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
python写的ARP攻击代码实例
2014/06/04 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
详解python配置虚拟环境
2019/04/08 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
python3中sys.argv的实例用法
2020/04/24 Python
Django封装交互接口代码
2020/07/12 Python
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
网站推广策划方案
2014/06/04 职场文书
中秋节活动总结
2014/08/29 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
环卫工作汇报材料
2014/10/28 职场文书
2015年助残日活动总结
2015/03/27 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android