js事件阻止事件在dom层次的传播

stopPropagation()可以阻止事件在dom层次的传播,只要从事件捕获阶段到事件冒泡阶段遇到事件处理函数
实践测试

1.设置一个容器里面包含一个按钮

<div id="father">
    <button id="son">按下我</button>
  </div>
  <style>
    #father{
      width: 200px;
      height: 200px;
      background: red;
    }
  </style>

在这里插入图片描述

2.给两个元素添加监听器

var father=document.getElementById('father');
    var son=document.getElementById('son');
    father.addEventListener("click",function(){
      console.log("这是父元素");
    },true);
    son.addEventListener("click",function(event){
      console.log("这是子元素");
    },true);

事件触发就像一个v,我们再任何一个阶段设置了stopPropagation()就会掐断这个流程

3.在不同的阶段设置监听器和使用stopPropagation()

3.1将两个事件处理函数设置在捕获阶段

给 div元素设置stopPropagation(),点击button

在这里插入图片描述

给button元素设置stopPropagation(),点击button

在这里插入图片描述
两个元素都触发了,由于在冒泡阶段没有碰到stopPropagation(),所以事件会一直执行下去

3.2将两个事件处理函数设置在冒泡阶段

事件设置在冒泡阶段是一个相反的过程,但原理都是会阻止后续的触发,在这个阶段设置的阻止行为就和我们想要的效果一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值