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困惑—包装集 DOM节点
Oct 16 Javascript
JS 事件绑定函数代码
Apr 28 Javascript
jquery json 实例代码
Dec 02 Javascript
JavaScript基于ajax编辑信息用法实例
Jul 15 Javascript
JS与jQuery遍历Table所有单元格内容的方法
Dec 07 Javascript
jquery对复选框(checkbox)的操作汇总
Jan 13 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
fetch 使用及如何接收JS传值
Nov 11 Javascript
Babel 入门教程学习笔记
Jun 13 Javascript
Node.js API详解之 dgram模块用法实例分析
Jun 05 Javascript
JavaScript实现移动端拖动元素
Nov 24 Javascript
js中Object.create实例用法详解
Oct 05 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 $_FILES函数详解
2011/03/09 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
twig模板常用语句实例小结
2016/02/04 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
javascript下过滤数组重复值的代码
2007/09/10 Javascript
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
node.js中的fs.createWriteStream方法使用说明
2014/12/17 Javascript
jQuery插件pagination实现分页特效
2015/04/12 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
element中的$confirm的使用
2020/04/26 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Django中处理出错页面的方法
2015/07/15 Python
带你了解python装饰器
2017/06/15 Python
python os模块简单应用示例
2019/05/23 Python
Python实现K折交叉验证法的方法步骤
2019/07/11 Python
python设置随机种子实例讲解
2019/09/12 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
python多进程重复加载的解决方式
2019/12/13 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
简述DNS进行域名解析的过程
2013/12/02 面试题
舞蹈兴趣小组活动总结
2014/07/07 职场文书
离婚协议书怎么写
2014/09/12 职场文书
安阳殷墟导游词
2015/02/10 职场文书
工作犯错保证书
2015/05/11 职场文书