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 插件学习(六)
Aug 06 Javascript
javascript实现手机震动API代码
Aug 05 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
js生成随机数方法和实例
Jan 17 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
Mar 10 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
详解AngularJS脏检查机制及$timeout的妙用
Jun 19 Javascript
关于vue-router的那些事儿
May 23 Javascript
Redux实现组合计数器的示例代码
Jul 04 Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 Javascript
JS中的const命令你真懂它吗
Mar 08 Javascript
JS创建或填充任意长度数组的小技巧汇总
Oct 24 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 Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
使用CSS和jQuery模拟select并附提交后取得数据的代码
2013/10/18 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
浅述python2与python3的简单区别
2018/09/19 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
python中Pexpect的工作流程实例讲解
2021/03/02 Python
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
2015年社会实践个人总结
2015/03/06 职场文书
校运会通讯稿
2015/07/18 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js