JavaScript阻止事件冒泡的方法

我們需要註意的是:事件冒泡本身的特性,會帶來的壞處,也會帶來的好處,在後續的博客我會詳細說明。

  • 所以我們在這裡將論述一下如何阻止事件冒泡。
  • 比如現在有一個子盒子和一個父盒子,子盒子和父盒子二者都有點擊事件,但是此時,當我們點擊子盒子時,隻想讓子盒子顯示點擊事件。這裡我們就要用到阻止事件冒泡的方法來隔斷父盒子的事件顯示。

先創建兩個盒子,並給他們添加點擊事件,如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .father{
            margin: 100px auto;
            width: 100px;
            height:100px;
            overflow: hidden;
            background-color: palegreen;
        }
        .son{
            width: 50px;
            height: 50px;
            margin-left: 25px;
            margin-top: 25px;
            background-color: paleturquoise;
        }
    </style>
</head>
<body>
    <div class="father">
        <div class="son"></div>
    </div>
    <script>
        var father = document.querySelector('.father');
        var son = document.querySelector('.son');
       son.addEventListener('click',function(){
            alert('son');
        },false)
        father.addEventListener('click',function(){
            alert('father');
        },false)
    </script>
</body>
</html>

當我們點擊子盒子的點擊事件時,打印結果為:

在這裡插入圖片描述

我們應該怎樣阻斷父盒子的點擊事件呢?

可以直接在子盒子內部的點擊事件裡面添加stopPropagation()方法,

如下所示:

son.addEventListener('click',function(e){
            alert('son');
            e.stopPropagation();
        },false)


此時,運行結果為:

在這裡插入圖片描述

阻斷成功。

但是需要註意的是:這個方法也有兼容性問題,在低版本瀏覽器中(IE 6-8 )通常是利用事件對象cancelBubble屬性來操作的。即直接在相應的點擊事件裡面添加:

e.cancelBubble = true;


 如果我們想要解決這種兼容性問題,就可以采用下述方法:

if(e && e.stopPropagation){
      e.stopPropagation();
  }else{
      window.event.cancelBubble = true;
  }

到此這篇關於基於JavaScript阻止事件冒泡的文章就介紹到這瞭,更多相關JavaScript阻止事件冒泡內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: