美文网首页
javascript 中捕获和阻止捕获,冒泡和阻止冒泡

javascript 中捕获和阻止捕获,冒泡和阻止冒泡

作者: 罗斯福 | 来源:发表于2019-12-14 14:15 被阅读0次

1.冒泡排序实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>bubble</title>
    <style>
        button{
            background: red;
            color:white;
        }
        #third{
            width: 50px;
            height: 50px;
            border:thin solid red;
        }
        #second{
            width: 100px;
            height: 100px;
            border:thin solid red;
        }
        #first{
            width:200px;
            height: 200px;
            border:thin solid red;
        }
    </style>
</head>
<body>
    <div id="first">
        <div id="second" >
            <div id="third" >
                <button id="button">事件冒泡</button>
            </div>
        </div>
    </div>
    <script>

        document.getElementById("button").addEventListener("click",function(){
            alert("button");
        },false);//如果不添加false,默认为冒泡

        document.getElementById("third").addEventListener("click",function(){
            alert("third");
        },false);

        document.getElementById("second").addEventListener("click",function(){
            alert("second");
        },false);        

        document.getElementById("first").addEventListener("click",function(){
            alert("first");
        },false);

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

现象:可以看到虽然我们只点击了botton元素,但是botton外的事件依次被促发,触发的顺序为DOM树的最下层到DOM树的最上层。

2.怎么阻止冒泡

调用函数stopPropagation()
上述的事件botton事件处理如下:

document.getElementById("button").addEventListener("click",function(event){
            alert("button");
            event.stopPropagation();    
        },false);

这样点击botton只会显示一个弹窗

二.捕获事例:

只需要将上述中addEventListener中将false改为ture,怎么阻止捕获,同样可以再需要阻止的节点添加事件stopPropagation();

document.getElementById("second").addEventListener("click",function(event){
            alert("button");
            event.stopPropagation();    
        },true);

结果:指挥弹出first,second
补充:DOM3新增函数:event.stopImmediatePropagation()
VSstopPropagation()
若同一元素上绑定多个事件,若使用前者将同时被阻止,后者将只阻止当前的事件传递到父元素。
祥情参照:
https://developer.mozilla.org/zh-CN/docs/Web/API/Event/stopImmediatePropagation

相关文章

  • javascript 中捕获和阻止捕获,冒泡和阻止冒泡

    1.冒泡排序实例: 现象:可以看到虽然我们只点击了botton元素,但是botton外的事件依次被促发,触发的顺序...

  • 阻止冒泡和阻止捕获

    注意:现代所有的浏览器都支持事件冒泡,只是在实现上有一些差别 阻止事件冒泡捕获: stopPropagation(...

  • js 阻止冒泡 阻止默认事件

    js冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件...

  • 默认事件

    js冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件...

  • vue 阻止事件冒泡,捕获方法

    要想了解 VUE 阻止事件冒泡和捕获方法,首先要了解一下 JS 事件和 JS 阻止事件冒泡,捕获方法 1. js ...

  • 事件代理及常用的 HTML 事件

    之前总结了事件捕获和冒泡以及阻止事件传播,今天写一下事件代理方面的总结DOM 事件之捕获、冒泡:阻止事件传播: 事...

  • day29-web前端之jQuery及Ajax

    1事件冒泡和捕获 1.1.事件冒泡:在子标签中产生的事件会传递给父标签 1.2事件捕获 捕获事件-阻止事件从子标签...

  • java script 知识点

    事件事件流冒泡捕获阻止冒泡e.stopPropagation()阻止默认事件e.preventDefault()常...

  • vue事件

    事件:stopPropagation, cancelBubble=true阻止事件传播,阻止冒泡,也可以阻止捕获p...

  • 事件冒泡(阻止冒泡)和事件捕捉(阻止捕获)

    很多朋友私聊问我怎么阻止事件冒泡,不懂事件冒泡和事件捕捉的童鞋看过来了,小编今天就来给大家讲解一下。 我们先来简单...

网友评论

      本文标题:javascript 中捕获和阻止捕获,冒泡和阻止冒泡

      本文链接:https://www.haomeiwen.com/subject/xhucnctx.html