事件流

123 阅读2分钟

1.事件的监听

elem.addEventListener('click事件类型',事件处理函数,true/false) 
第三个参数为true,那么这个事件处理函数就是捕获阶段!!!
使用addEventListener绑定事件,一单事件产生会执行绑定在上面的所有的事件处理函数!

2.时间监听的删除

 elem.removeEventListener('click时间类型',事件处理函数)

3.冒泡阶段

冒泡事件,当点击,这个事件会一直向上传递,执行每一个事件函数,直到html

3.事件流

第一阶段 捕获 捕获的过程是从上到下!!!document html body -- 捕获 你点击的谁就捕获谁!!! (capture)
第二阶段 目标阶段 查到了是谁点击
第三阶段 冒泡阶段!!! bubbling 再由目标阶段向上执行

执行过程 执行目标的所有带true的父级(捕获阶段)——>(捕获到目标阶段)
当处于目标阶段时。谁先注册了函数,谁先执行!!!看true 和false 那个在前执行那个->在进行冒泡阶段 执行false 向上执行
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .grandfater {
            width: 400px;
            height: 400px;
            border:1px solid red;
        }
        .father {
            width: 200px;
            height: 200px;
            border:1px solid red;
        }
        .son {
            width: 100px;
            height: 100px;
            border:1px solid red;
        }
    </style>
</head>
<body>
    <div class="grandfater">
        <div class="father">
            <div class="son"></div>
        </div>
    </div>
    <script>
        //第一阶段 捕获 捕获的过程是从上到下!!!document html body -- 捕获 你点击的谁就捕获谁!!! (capture)
        //第二阶段 目标阶段 查到了是谁点击
        //第三阶段 冒泡阶段!!! bubbling 再由目标阶段向上执行 
        //执行过程 执行目标的所有带true的父级(捕获阶段)——>(捕获到目标阶段)当处于目标阶段时。谁先注册了函数,谁先执行!!!看truefalse 那个在前执行那个->在进行冒泡阶段 执行false 向上执行
          // 1.捕获阶段事件也可以进行绑定
          var grandfater = document.querySelector(".grandfater")
        var father = document.querySelector(".father")
        var son = document.querySelector(".son")

        // 第三个参数为true,那么这个事件处理函数就是捕获阶段!!!
        grandfater.addEventListener("click", function() {
            console.log("grandfather捕获")
        }, true)

        grandfater.addEventListener("click", function() {
            console.log("grandfather冒泡")
        }, false)

        father.addEventListener("click", function() {
            console.log("father捕获")
        }, true)

        father.addEventListener("click", function() {
            console.log("father冒泡")
        }, false)

        // 当处于目标阶段时。谁先注册了函数,谁先执行!!!
        son.addEventListener("click", function() {
            console.log("son冒泡")
        }, false)
        son.addEventListener("click", function() {
            console.log("son捕获")
        }, true)
    </script>
</body>
</html>