海南网站建设新闻
您当前位置:海南网站建设首页 >> 海南网站建设新闻 >> 网站设计技术
海口网站建设新闻

如何JQuery阻止事件冒泡

时间: 2019-04-04 来源:互联网 作者: 点击:0

 我们在平时的开发过程中,肯定会遇到在一个div(这个div可以是元素)包裹一个div的情况,但是呢,在这两个div上都添加了事件,如果点击里面的div我们希望处理这个div的事件,但是呢,我们不希望外层的div的事件也执行,这时候我们就要用到阻止冒泡

通俗点来说吧,你在家里看电视,躲在自己的小房间,但是你不希望声音传到隔壁父母的耳朵里,这时候,你可能躲在被窝里,或者墙壁的隔音效果很好,阻隔声音可以理解为阻止冒泡。

阻止事件冒泡的三种手段

1、return false:可以阻止默认事件和冒泡事件

2、event.stopPropagation/IE下event.cancelBubble  = true;:可以阻止冒泡事件但是允许默认事件

3、event.preventDefault();/IE下event.returnValue = false:可以阻止默认事件但是允许冒泡事件

上面的三种方法运用在不同的场景,可以合理运用,下面是代码,可以自己做一些测试:

复制代码
<!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>
复制代码
相关文章