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创建数组之联合数组的使用方法示例
Dec 26 Javascript
使用jQuery简单实现模拟浏览器搜索功能
Dec 21 Javascript
DOM基础教程之事件类型
Jan 20 Javascript
基于jQuery实现仿微博发布框字数提示
Jul 27 Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
Jun 14 Javascript
微信小程序实现限制用户转发功能的实例代码
Feb 22 Javascript
用js实现放大镜效果
Oct 28 Javascript
WebPack工具运行原理及入门教程
Dec 02 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判断表单复选框选中状态完整例子
2014/06/24 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
2016/11/09 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
JS实现canvas简单小画板功能
2020/06/23 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
python实现登录密码重置简易操作代码
2019/08/14 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
pytorch程序异常后删除占用的显存操作
2020/01/13 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
中英文自我评价常用句型
2013/12/19 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
企业文化宣传标语
2014/06/09 职场文书
学籍证明模板
2014/11/21 职场文书
导游词之江南周庄
2019/12/06 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python