JQuery阻止事件冒泡


我們在平時的開發過程中,肯定會遇到在一個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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM