1.事件冒泡:
由里向外依次执行,这就是所谓的事件冒泡(从里向外进行传播);摘自原作者的例子:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>事件冒泡</title> <style> .one{ width:400px; height:100px; border:1px solid #333; } .two{ height:35px; line-height:35px; padding-left:15px; border:1px solid red; } .three{ padding:10px; background-color: green; border:1px solid #999; cursor:pointer; } </style> <script src = "http://code.jquery.com/jquery-1.11.2.min.js"></script> <script> $(function(){ $(".one").click(function(event) { alert($(this).text()); }); $(".two").click(function(event) { alert($(this).text()); }); $(".three").click(function(event) { alert($(this).text()); }); }); </script> </head> <body> <div class="one"> 我是one(div) <p class="two"> 我是two(p) <span class="three">我是three(span)</span> </p> </div> </body> </html>
2.事件捕获:
从外向里依次执行;
3.事件冒泡和事件捕获的切换:
addEventListener(事件监听)方法
element.addEventListener(event, function, useCapture)
4.阻止事件冒泡:
stopPropagation()方法,但IE不支持,使用event对象在事件函数调用;
//封装阻止事件冒泡函数 function stopPropagation(event){ var event = window.event || event; if(document.all){ //document.all:判断浏览器是否为IE event.cancelBubble = true //IE浏览器 }else{ event.stoopPropagation(); //其他浏览器 } }
5.默认行为:
6.阻止默认行为:
preventDefault()方法来取消事件默认行为,但是只有当cancelable属性设置为true的事件,才可以使用preventDefault()来取消事件默认行为,使用event对象在函数中调用;
<a href="JavaScript:void(0)"></a>;
(return:false);
//封装阻止事件默认行为函数 function preventDefaultActiion(event){ var event = window.event || event; if(document.all){ event.returnValue = false; //IE;浏览器 }else{ event.preventDefault(); //其他浏览器 } }
文章来源: JavaScript基础-----事件冒泡和阻止