咱们在平时的开发过程当中,确定会遇到在一个div(这个div能够是元素)包裹一个div的状况,可是呢,在这两个div上都添加了事件,若是点击里面的div咱们但愿处理这个div的事件,可是呢,咱们不但愿外层的div的事件也执行,这时候咱们就要用到阻止冒泡。html
通俗点来讲吧,你在家里看电视,躲在本身的小房间,可是你不但愿声音传到隔壁父母的耳朵里,这时候,你可能躲在被窝里,或者墙壁的隔音效果很好,阻隔声音能够理解为阻止冒泡。jquery
一、return false:能够阻止默认事件和冒泡事件测试
二、event.stopPropagation/IE下event.cancelBubble = true;:能够阻止冒泡事件可是容许默认事件spa
三、event.preventDefault();/IE下event.returnValue = false:能够阻止默认事件可是容许冒泡事件code
上面的三种方法运用在不一样的场景,能够合理运用,下面是代码,能够本身作一些测试:htm
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery阻止冒泡</title> <style> .div1{ width: 140px; border: 1px solid blue; } .div2{ width: 100px; height: 100px; margin: 20px; border: 1px solid red; } </style> </head> <body> <div class="div1"> <div class="div2"> 点我呀!!!! </div> </div> <a href="http:www.baidu.com" id="a1">百度</a> <script src="../js/jquery/jquery.min.js"></script> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script> <script> $('.div1').bind('click',function(){ alert("div1"); }); $('.div2').bind('click',function(){ alert("div2"); // return false;//也能够经过return false 阻止冒泡 if(window.event){//IE下阻止冒泡 event.cancelBubble = true; }else{ event.stopPropagation(); } }); $('#a1').bind('click',function(){ if(window.event){//IE下阻止默认事件 event.returnValue = false; }else{ event.preventDefault(); } alert("我是连接"); //return false;//若是不添加任何阻止事件,先弹框,后跳转,咱们能够经过return false阻止跳转 }); </script> </body> </html>