js addEventListener事件捕获与冒泡,第三个参数详解,阻止事件传播

js addEventListener事件捕获与冒泡,第三个参数详解,阻止事件传播结论element.addEventListener(event,function[,useCapture])event:事件名称,如clickfunction:指定要事件触发时执行的函数,可以传入事件参数useCapture:可选。布尔值,指定事件是否在捕获或冒泡阶段执行。默认false:在冒泡阶段执行指定事件true:在捕获阶段执行事件event.stopPropagat…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

结论

element.addEventListener(event, function[, useCapture])

  1. event:事件名称,如click
  2. function:指定要事件触发时执行的函数,可以传入事件参数
  3. useCapture:可选。布尔值,指定事件是否在捕获或冒泡阶段执行。
    默认false:在冒泡阶段执行指定事件
    true:在捕获阶段执行事件

event.stopPropagation():阻止事件传播,用于function(event){}中

图解捕获与冒泡

实例:aa里面有个bb,bb里面有个cc,当点击cc时会发生什么?
angular_lyt

实例代码

<div id="aa">
    aa
    <div id="bb">
      bb
      <div id="cc">cc</div>
    </div>
  </div>

Jetbrains全家桶1年46,售后保障稳定

  function print(e){ 
   
     console.log(this.id);
   }
   aa.addEventListener('click',print);//第三个参数默认为false
   bb.addEventListener('click',print);
   cc.addEventListener('click',print);
div{ 
   
      display: flex;
      align-items: center;
      justify-content: center;
    }
    #aa{ 
   
      margin:100px 0 0 400px;
      background-color: #f0ad4e;
      height:300px;
      width:300px;
    }
    #bb{ 
   
      background-color: #4078c0;
      height:200px;
      width:200px;
    }
    #cc{ 
   
      background-color: #42b983;
      height:100px;
      width:100px;
    }

讲解

  1. 当点击cc时,按cc>bb>aa依次捕获,再按aa>bb>cc依次冒泡;因为第三个参数(useCapture)默认为false,所以在冒泡阶段执行各自click函数,结果如下:
    cc
    bb
    aa
  2. 当js修改为
 function print(e){ 
   
    console.log(this.id);
  }
  aa.addEventListener('click',print,true);//第三个参数默认为false
  bb.addEventListener('click',print,true);
  cc.addEventListener('click',print,true);

再点击cc时,按cc>bb>aa依次捕获,再按aa>bb>cc依次冒泡;因为第三个参数(useCapture)为true,所以在捕获阶段执行各自click函数,结果如下:
aa
bb
cc
3. 当js修改为

 function print(e){ 
   
 	e.stopPropagation();//执行完此函数后,该事件不再继续传播
    console.log(this.id);
  }
  aa.addEventListener('click',print,true);//第三个参数默认为false
  bb.addEventListener('click',print,true);
  cc.addEventListener('click',print,true);

再点击cc时,捕获cc,执行cc的click函数, 因为print函数中有e.stopPropagation(),所以执行完该函数后,click事件不再传播.结果如下:
aa

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234202.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • javascript运算符的优先级

    最基木的运算符优先级就是所谓的“先乘除,后加减”。对于优先顺序处于同一层次上的运算符,按照从左到右出现的顺序计算。下面给出javascript定义的所有运算符的优先级。运算符优先顺序成员选择、括号、

    2021年12月21日
    45
  • Spring Security CAS认证

    Spring Security CAS认证13.7CAS认证13.7.1概述JA-SIG生产一种称为CAS的企业级单点登录系统。与其他计划不同,JA-SIG的中央身份验证服务是开源的,广泛使用的,易于理解,独立于平台,并支持代理功能。SpringSecurity完全支持CAS,并提供从SpringSecurity的单应用程序部署到企业级CAS服务器保护的多应用程序部署的轻松迁移路径。您可以在https://www.ape…

    2022年6月25日
    69
  • VS2013 密钥 – 所有版本

    VS2013 密钥 – 所有版本VS2013密钥–所有版本VisualStudioUltimate2013KEY(密钥):BWG7X-J98B3-W34RT-33B3R-JVYW9VisualStudioPremium2013KEY(密钥):FBJVC-3CMTX-D8DVP-RTQCT-92494VisualStudioProfessional2013KEY(密钥):XDM3T-W3T3V…

    2022年5月19日
    73
  • 分布式事务解决方案之TCC(Hmily)「建议收藏」

    分布式事务解决方案之TCC(Hmily)「建议收藏」1什么是TCC事务TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认Confirm、撤销Cancel。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个与Try相反的操作即回滚操作。TM首先发起所有的分支事务的try操作,任何一个分支事务的try操作执行失败,TM将会发起所有分支事务的Cancel操作,若try操作全部成功,TM将会发起所有分支事务的Confirm操作,其中Confirm/Cancel操作若执

    2022年5月11日
    40
  • Iterative Soft Thresholding和Iterative Shrinkage/Thresholding的区别「建议收藏」

    Iterative Soft Thresholding和Iterative Shrinkage/Thresholding的区别「建议收藏」版权声明:本文为博主原创文章,遵循CC4.0by-sa版权协议,转载请附上原文出处链接和本声明。…

    2022年6月6日
    31
  • 一文详解MOS管驱动电路的核心设计「建议收藏」

    一文详解MOS管驱动电路的核心设计「建议收藏」MOS管电子产品生产中不可或缺的重要保护器件,在手机、笔记本电脑、蓝牙耳机等都有MOS管的身影,可以这样说,有便携式电子产品的地方一定有MOS管的存在,究竟为何MOS管能在竞争激烈的电子行业中脱颖而出,我觉的最主要的原因莫过于MOS管绝佳的性能,如简化驱动电路、自适应能力强、抗干扰能力强等性能使得MOS管崛起的速度快,今天我们要说的是MOS管在驱动电路中的核心设计,为何能让MOS管在竞争如此激烈的…

    2022年6月19日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号