JS事件流介绍

一、事件流

概念:描述的是页面接受事件的顺序

过程:事件捕获---事件目标阶段---事件冒泡

二、事件捕获

概念:从DOM根元素开始执行应对事件(最不具体的节点最收到使事件,最具体的节点最后收到事件)

捕获机制必须使用事件监听的形式注册

dom.addEventListener(事件类型,事件处理函数,是否使用捕获机制)

事件监听,默认false不使用事件捕获

<body>
    <div class="outer">
        <div class="center">
            <div class="inner"></div>
        </div>
    </div>
    <script>
        let outer = document.querySelector('.outer')
        let center = document.querySelector('.center')
        let inner = document.querySelector('.inner')
        let handle1 = function(){
            console.log('outer');
        }
        let handle2 = function(){
            console.log('center');
        }
        let handle3 = function(){
            console.log('inner');
        }
        outer.addEventListener('click',handle1,true)
        center.addEventListener('click',handle2,true)
        inner.addEventListener('click',handle3,true)
    </script>
</body>

点击inner的盒子,返回outer  center  inner

点击center的盒子,返回outer  center  

点击outer的盒子,返回outer  

三、事件冒泡(IE事件)

概念:一个元素被触发时,同样的事件将会在该元素的所有祖先元素中依次触发

事件冒泡必要性:(减少事件注册,提高效率)

                                引出事件委托,把事件加到父级上,通过判断事件来源子集,执行相应操作

阻止事件冒泡过程:1.判断不能冒泡区域

                                2.传递该区域最大盒子的注册事件

                                3.使用  event.stopPropagation() 

L0事件:on事件类型   dom0不能追加同一类型事件,如果追加了,会发生覆盖
    <button >点击</button>
    <script>
        let button = document.querySelector('button')
        button.onclick = function(){
            console.log("首次绑定事件");
        }
        button.onclick = function(){
            console.log("第二次绑定事件");
        }//第二次绑定事件
    </script>
</body>

解绑 L0,事件对象.on事件类型 = null

eg:button.onclick  = null

L2事件:可以追加事件,按照代码顺序运行
<body>
    <button >点击</button>
    <script>
        let button = document.querySelector('button')
        button.addEventListener ('click',function(){
            console.log("首次绑定事件");
        }) 
        button.addEventListener ('click',function(){
            console.log("第二次绑定事件");
        }) //首次绑定事件     第二次绑定事件
       
    </script>
</body>

解绑L2事件,通过removeEventListener(事件类型,事件处理函数名),进行解绑,

<body>
    <button >点击</button>
    <script>
        let handle1 = function(){       
            console.log("首次绑定事件");
        }
        let handle2 = function(){
            console.log("第二次绑定事件");
        }
        let button = document.querySelector('button')
        button.addEventListener ('click',handle1) 
        button.addEventListener ('click',handle2) 
        button.removeEventListener('click',handle1)//第二次绑定事件
    </script>
</body>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值