冒泡和事件捕获

什么是事件流

事件流,描述的是页面中接受事件的顺序。

事件冒泡

总结来说就是: 当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window。

阻止冒泡

1、JS阻止事件冒泡

我们用 e.stopPropagation() 这个方法添加到某事件函数里的末尾,就可以做到阻止冒泡事件。但是IE8及以下不支持e.stopPropagation() 方法,所以就封装一个方法。

<script>
    function stopPropagation(e) {
        e = e || window.event;
        if(e.stopPropagation) {
            e.stopPropagation(); //W3C阻止冒泡方法
        } else {
            e.cancelBubble = true; //IE阻止冒泡方法
        }
    }
</script>

child(区域①)的点击事件函数最后添加 stopPropagation(e) 方法。

<script>
    child.onclick = function (e) {
        alert("你点击了child区域");
        stopPropagation(e);
    };
</script>

复制

  • 再次点击区域①的时候就只弹出 你点击了child区域 这一个弹框。

2、JQ阻止事件冒泡

jq阻止事件冒泡就简单了,直接在事件函数里面添加 return false; 就行了。

<script>
    $("#parents").click(function () {
       alert("你点击了parents区域")
    });
    $("#child").click(function () {
        alert("你点击了child区域");
        return false;
    });
</script>

Last updated