javascript 阻止冒泡和瀏覽器的預設行為詳解

來源:互聯網
上載者:User

在使用javascript編程時會遇到一個問題,就是當你給html添加事件時,由於瀏覽器預設的為冒泡型事件觸發機制,所以會觸發你不想觸發的事件.那麼通過如下的函數可以解決這個問題。

1、阻止事件冒泡

 代碼如下 複製代碼

function stopBubble(e) {
    // 如果提供了事件對象,則這是一個非IE瀏覽器
    if (e && e.stopPropagation) {
        // 因此它支援W3C的stopPropagation()方法
        e.stopPropagation();
    } else {
        // 否則,我們需要使用IE的方式來取消事件冒泡
        window.event.cancelBubble = true;
    }
}


2、阻止預設行為

當按鍵後或者點擊一個連結後,不希望按鍵或者連結執行時,可以取消傳回值.即停止預設事件預設行為

2.1、阻止連結

 代碼如下 複製代碼

function stopDefault(e) {
    // 阻止瀏覽器的預設行為
    if (e && e.preventDefault) {
        // 阻止預設瀏覽器動作(W3C)
        e.preventDefault();
    } else {
        // IE中阻止函數器預設動作的方式
        window.event.returnValue = false;
    }
 
    return false;
}

樣本 : 點擊頁面的任何URL連結 不跳轉。

 代碼如下 複製代碼

var links = document.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
    links[i].onlick = function(e) {
        alert('我不跳轉,點我也沒用');
        stopDefault(e);
    }
}

2.2、阻止下拉式功能表


另一個阻止冒泡常見的應用就是下拉式功能表的效果,點擊按鈕,下拉式功能表顯示,在點擊頁面任何其它部分,下拉式功能表隱藏。

 代碼如下 複製代碼

//給document添加點擊事件,點擊時關閉菜單,預設情況下,點擊任何元素,都會冒泡的到document
document.onclick = function(){
    b.style.display = "none";
}
 
//為點擊元素顯示下拉式功能表的元素阻止冒泡,這樣document的click事件就被阻止執行
function showMenu(e) {
    var e = window.event || e;
    b.style.display = "block";
 
    if (e.stopPropagation) {
        e.stopPropagation();
    } else {
        e.cancelBubble=true;
    }
}
 
btn.onclick=b.onclick = showMenu;

3、Jquery阻止事件冒泡
如果使用jquery庫的進行綁定dom的事件,處理方式則為:

 代碼如下 複製代碼

$(selector).click(function(event) {
    event.stopPropagation();
    //do somethine
});

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.