DOM事件的三个阶段及阻止事件冒泡

事件的三个阶段

  1. 捕获阶段
  2. 当前目标阶段
  3. 冒泡阶段

JS中注册事件的三种方式:
onclick只有事件冒泡,
attachEvent只有两个参数, 只有事件冒泡,
addEventListener三个参数,最后一个参数默认false为事件冒泡,true为事件捕获。所以demo用的addEventListener这个方式

事件冒泡
html部分

  <div id="box1" style=" width: 200px;height: 200px;background-color: red;">
        <div id="box2" style=" width: 100px;height: 100px;background-color: green;"></div>
    </div>

js部分

   var box1 = document.getElementById('box1');
        var box2 = document.getElementById('box2');
        box1.addEventListener("click", function() {
            console.log(this.id);
        }, false)
        box2.addEventListener("click", function() {
            console.log(this.id);
        }, false)
        document.body.addEventListener("click", function() {
            console.log('body');
        }, false)
        document.addEventListener("click", function() {
            console.log('document');
        }, false)

当我点击绿色的box2时候,从里往外依次给元素传递事件,后台返回依次是box2,box1,body,document。这就是事件冒泡。
在这里插入图片描述
事件捕获
js部分

  var box1 = document.getElementById('box1');
        var box2 = document.getElementById('box2');
        box1.addEventListener("click", function() {
            console.log(this.id);
        }, true)
        box2.addEventListener("click", function() {
            console.log(this.id);
        }, true)
        document.body.addEventListener("click", function() {
            console.log('body');
        }, true)
        document.addEventListener("click", function() {
            console.log('document');
        }, true)

当我点击绿色的box2时候,从最外层往里依次传递事件,后台返回依次是document,body,box1,box2,。这就是事件捕获。
在这里插入图片描述
最后用一张图总结
在这里插入图片描述
阻止事件冒泡有两种方法:

  1. 标准的DOM方法
    e.stopPropagation();
  2. 非标准的方式 老版本的IE支持
    e.cancelBubble = true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值