js冒泡/捕獲事件及阻止冒泡方法詳細(xì)總結(jié)

字號:


    javascript, jquery的事件中都存在事件冒泡和事件捕獲的問題,針對這兩個問題,本文給出詳細(xì)的解決方法,需要的朋友不要錯過
    javascript, jquery的事件中都存在事件冒泡和事件捕獲的問題,下面將兩種問題及其解決方案做詳細(xì)總結(jié)。
    事件冒泡是一個從子節(jié)點向祖先節(jié)點冒泡的過程;
    事件捕獲剛好相反,是從祖先節(jié)點到子節(jié)點的過程。
    給一個jquery點擊事件的例子:
    代碼如下:
    <!DOCTYPE html>
    <meta charset="utf-8">
    <title>test</title>
    <head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script type="text/javascript">
    $(function(){
    $('#clickMe').click(function(){
    alert('hello');
    });
    $('body').click(function(){
    alert('baby');
    });
    });
    </script>
    </head>
    <body>
    <div>
    <button type="button" id="button2">click me</button>
    <button id="clickMe">click</button>
    </div>
    </body>
    </html>
    事件冒泡現(xiàn)象:點擊 “id=clickMe” 的button,會先后出現(xiàn)“hello” 和 “baby” 兩個彈出框。
    分析:當(dāng)點擊 “id=clickMe” 的button時,觸發(fā)了綁定在button 和 button 父元素及body的點擊事件,所以先后彈出兩個框,出現(xiàn)所謂的冒泡現(xiàn)象。
    事件捕獲現(xiàn)象:點擊沒有綁定點擊事件的div和 “id=button2” 的button, 都會彈出 “baby” 的對話框。
    在實際的項目中,我們要阻止事件冒泡和事件捕獲現(xiàn)象。
    阻止事件冒泡方法:
    法1:當(dāng)前點擊事件中return false;
    代碼如下:
    $('#clickMe').click(function(){
    alert('hello');
    return false;
    });
    法2:
    代碼如下:
    $('#clickMe').click(function(event){
    alert('hello');
    var e = window.event || event;
    if ( e.stopPropagation ){ //如果提供了事件對象,則這是一個非IE瀏覽器
    e.stopPropagation();
    }else{
    //兼容IE的方式來取消事件冒泡
    window.event.cancelBubble = true;
    }
    });