事件的执行,事件捕获,阻止事件冒泡的问题

<body>

    <div class="box1">

        <div class="box2">

            <div class="box3">

            </div>

        </div>

    </div>

    <script>

        /* 事件的执行:

        1.当给一个元素添加一个事件元素的时候,根据dom结构,结构上的元素都会触发,同类事件类型

        直到dom结构的最顶层对象(docunment)

        执行的顺序:从目标(被点击的元素)元素往上依次执行

2.事件的捕获:

事件源.addEventListener('事件类型',事件处理函数,boolean)

boolean为false(默认值)执行事件冒泡

boolea为true执行事件捕获

                 */

        var box1=document.querySelector('.box1');

        var box2=document.querySelector('.box2');

        var box3=document.querySelector('.box3');

        box1.onclick=function(){

            console.log('box1元素');

        }

        box2.oncilck=function(){

            console.log('box2元素');

        }

        box3.oncilck=function(){

            console.log('box3元素');

        }

        // 如果点击box1其执行的顺序为box1,box2,box3

        // 点击box2时执行的顺序为:box2,box3

     

   // 事件捕获:

        box1.addEventListener('click',function(){

            console.log('box1元素');

        },true);

        box2.addEventListener('click',function(){

            console.log('box2元素');

        },true);

        box3.addEventListener('click',function(){

            console.log('box3元素');

        },true);

         // 如果点击box1其执行的顺序为box3,box2,box1

        // 点击box2时执行的顺序为:box3,box2

        


// 阻止事件冒泡:

        /* 1.e.cancelBubble=ture 取消冒泡为真 

        2.e.stoppropagation()停止传播

        */

        box1.addEventListener('click',function(){

            console.log('box1元素');

        },false);

        e.cancelBubble=true;

        // 或者用:e.stoppropagation()

        box2.addEventListener('click',function(){

            console.log('box2元素');

            e.cancelBubble=true;

        },false);

        box3.addEventListener('click',function(){

            console.log('box3元素');

            e.cancelBubble=true;

        },false);

    </script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者:codeXiu 来源:掘金 事件流 事件流一共由三个阶段分别是: 1.捕获阶段 2.目标阶段 3.冒泡阶段 ...
    强哥科技兴阅读 528评论 0 1
  • Call 和 Apply 的区别 语法:function.call(thisObj [, arg1[, arg2[...
    他方l阅读 326评论 0 0
  • Call 和 Apply 的区别语法:function.call(thisObj [, arg1[, arg2[,...
    HeroXin阅读 265评论 0 1
  • 1,事件冒泡,事件捕获 百度到的事件冒泡:当事件发生后,这个事件就要开始传播(从里到外或者从外向里)。为什么要传播...
    果粒橙没有粒阅读 868评论 2 3
  • 90天践行已经结束,因为工作原因不能去参加毕业典礼,有点遗憾。站在起点看终点,我还在想90天好快啊,一眨眼就过了。...
    追风cc阅读 174评论 0 0