事件捕获与冒泡的再探

Posted zhansu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件捕获与冒泡的再探相关的知识,希望对你有一定的参考价值。

先看一段代码,猜猜输出结果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    

    <div id="id1" style="width: 200px;height:200px;border: 1px solid #888;">
        ggggg
    </div>


        <script type="text/javascript">
            var obj1=document.getElementById(id1); 
            obj1.addEventListener(click,function(e)curClick(1);stopPropagation(e),false);
                     
            obj1.addEventListener(click,function(e)curClick(2);stopPropagation(e),true);
         
            obj1.addEventListener(click,function(e)curClick(3);stopPropagation(e),true);

            obj1.addEventListener(click,function(e)curClick(4);stopPropagation(e),false);
            
            function curClick(id)
                alert(id);
            
         
            function  stopPropagation(e)
                // return
                var e = window.event || event;  
                if(e.stopPropagation)  //W3C阻止冒泡方法  
                    e.stopPropagation();  
                 else   
                    e.cancelBubble = true; //IE阻止冒泡方法  
                 
                 

    </script>
</body>
</html>

 无论stopPropagation函数里是否反注释return,结果顺序都是1 2 3 4。为什么会这样,与捕获和冒泡的关系呢?先说结论,同一个DOM是处于目标阶段了,和捕获与冒泡无关了。可以看看这篇文章 你真的理解事件冒泡和事件捕获吗?

后面有三个问题,尤其是后两个,可以使你更深入理解这些概念:“需要注意的是,如果你还不明白为什么在c上触发的先是c1再是c2的话,那么你就需要在去看看第二个问题所描述的内容了”。

以上是关于事件捕获与冒泡的再探的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript---事件冒泡事件捕获

js——事件冒泡与捕获小例子

js关于冒泡事件与捕获事件的详解

js 事件冒泡与事件捕获

事件 - 冒泡与捕获

js函数中 如何阻止事件冒泡