js中addEventListener第三个参数涉及到的事件捕获与冒泡

js中,我们可以给一个dom对象添加监听事件,函数就是

addEventListener("click",function(){},true);

很容易理解,第一个参数是事件类型,比如点击(click)、触摸(touchstart),

第二个参数就是事件函数

比如我给一个button添加alert函数。

window.οnlοad=function(){
document.getElementById("hello").addEventListener("onkeydown",function () {
alert("hello");
});
}

那么第三个参数是什么呢?这个参数设计到事件的捕获与冒泡,为true时捕获,false时冒泡

什么意思呢?

我举个简单的例子,我有两个div和一个button,button在div2里面,div2在div1里面。如下图所示

给button、div1、div2、都添加了click事件,分别alert button、div1、div2。

window.onload=function(){
    document.getElementById("btn").addEventListener("click",function () {
        // body...
        alert("hello");
    });
    document.getElementById("div1").addEventListener("click",function(){
        alert("div1");
    });
    document.getElementById("div2").addEventListener("click",function(){
        alert("div2");
    });
}

那么问题就来了,我点击button,也相当于点击了div1和div2,那么,谁先出现呢?

直观的讲,谁在上面,谁在下面。

所以,在js中就分为了两个处理方法,冒泡和捕获。

冒泡:从里面往外面触发事件,就是alert的顺序是 button、div2、div1

捕获:从外面往里面触发事件,就是alert的顺序是div1、div2、button

要想冒泡,就要将每个监听事件的第三个参数设置为false,也就是默认的值

要想捕获,就要将每个监听事件的第三个参数设置为true

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值