JS中绑定事件顺序(事件冒泡与事件捕获区别)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JS中绑定事件顺序(事件冒泡与事件捕获区别),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1742字,纯文字阅读大概需要3分钟。
内容图文
在JS中,绑定的事件默认的执行时间是在冒泡阶段执行,而非在捕获阶段(重要),这也是为什么当父类和子类都绑定了某个事件,会先调用子类绑定的事件,后调用父类的事件。直接看下面实例
<! Doctype html > < html > < head > < meta charset ="utf-8" > < title ></ title > < style type ="text/css" > * { margin : 0 ; padding : 0 ; } </ style > </ head > < body > < div id ="id1" style ="height:400px; border:1px solid #000;" > < div id ="id2" style ="height:200px; border:1px solid #000;" > < div id ="id3" style ="height:50px; border:1px solid #000;" ></ div > </ div > </ div > </ body > < script type ="text/javascript" > var obj1 = document.getElementById( ‘ id1 ‘ ); obj1.addEventListener( ‘ click ‘ , function (){ alert( ‘ id1 ‘ ); }, false ); var obj2 = document.getElementById( ‘ id2 ‘ ); obj2.addEventListener( ‘ click ‘ , function (){ alert( ‘ id2 ‘ ); }, true ); var obj3 = document.getElementById( ‘ id3 ‘ ); obj3.addEventListener( ‘ click ‘ , function (){ alert( ‘ id3 ‘ ); }, true ); /* 如果第三个参数为true,则事件在捕获阶段执行,如果第三个参数为false,则事件在冒泡阶段执行 */ </ script > </ html >
当点击id3元素时候,执行结果是:id2,id3,id1
解析:因为obj2与obj3绑定的方法在捕获阶段执行,obj1的事件在冒泡阶段执行。
总结
在JS中,绑定的事件默认的执行时间是在冒泡阶段执行,而非在捕获阶段,必须要理解
不过我们可以通过绑定事件时,指定事件执行时间是在冒泡阶段还是捕获阶段。
obj.addEventListener(event,function(){},bool)
bool:false,代表冒泡阶段执行
bool:true,代表捕获阶段执行
JS在默认情况下获取事件后,就开始从根元素开始捕获所有该事件的监听对象,然后在冒泡阶段逐一执行。捕获阶段是在冒泡阶段前面
阻止冒泡
w3c的方法是e.stopPropagation(),IE则是使用e.cancelBubble = true;
阻止默认行为
w3c的方法是e.preventDefault(),IE则是使用e.returnValue = false;
关于JS 事件冒泡和onclick,click,on()事件触发顺序
onclick,click,on()的优先关系:onclick>click>on();
onclick和click绑定的事件,彼此之间遵守事件冒泡规则,从内到外触发;
on()绑定的事件,总是晚于onclick和click绑定的事件触发;
原文:http://www.cnblogs.com/cboydream/p/6296896.html
内容总结
以上是互联网集市为您收集整理的JS中绑定事件顺序(事件冒泡与事件捕获区别)全部内容,希望文章能够帮你解决JS中绑定事件顺序(事件冒泡与事件捕获区别)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。