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 相关文章推荐
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
一个可以增加和删除行的table并可编辑表格中内容
Jun 16 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
Sep 06 Javascript
AngularJS中$apply方法和$watch方法用法总结
Dec 13 Javascript
JavaScript实现自动跳转文本功能
May 25 Javascript
vue 使用自定义指令实现表单校验的方法
Aug 28 Javascript
Vue中android4.4不兼容问题的解决方法
Sep 04 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 Javascript
uni-app 组件里面获取元素宽高的实现
Dec 27 Javascript
JS实现普通轮播图特效
Jan 01 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模块 Memcached功能多于Memcache
2011/06/14 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
input+select(multiple) 实现下拉框输入值
2009/05/21 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
详解vuex的简单使用
2018/03/12 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
Pandas中把dataframe转成array的方法
2018/04/13 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
python相对企业语言优势在哪
2020/06/12 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
Delphi笔试题
2016/11/14 面试题
关于奉献的演讲稿
2014/05/21 职场文书
生活小常识广播稿
2014/09/16 职场文书
2014年客房部工作总结
2014/11/22 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
大学运动会加油稿
2015/07/22 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript