首页 > 其他分享 >原生js的事件流

原生js的事件流

时间:2024-08-14 16:18:23浏览次数:11  
标签:原生 触发 outer js middle 点击 inner 事件

原来js中的事件 :

event.preventDefault() 阻止事件的默认行为 event.stopPropagation() 阻止事件冒泡、传播   事件流的定义: 浏览器对于事件触发的执行流程   有下面三个div,他们是嵌套关系。如果每个div都触发了点击事件,那么是从内向外触发还是从外向内触发呢?
        <div id="outer">
            <div id="middle">
                <div id="inner">

                </div>
            </div>
        </div>

默认:从内向外触发,这种从内向外触发就是冒泡

捕获:事件从外向内触发

给上述三个div添加如下的点击事件代码

        let outer = document.querySelector("#outer");
        let middle = document.querySelector("#middle");
        let inner = document.querySelector("#inner");
        outer.addEventListener('click', function(){
            console.log('outer点击事件触发了...');
        })

        middle.addEventListener('click', function(){
            console.log('middle点击事件触发了...');
        })

        inner.addEventListener('click', function(){
            console.log('inner点击事件触发了...');
        })    

发现点击事件是从里向外进行触发,先是inner、接着middle、再接着是outer,这个就是事件冒泡。

 如果此时就想触发inner的点击事件,那么就需要在inner中添加stopPropagation,如下:

        inner.addEventListener('click', function(e){
            console.log('inner点击事件触发了...');
            e.stopPropagation();//阻止事件的传播行为
        })

 如果我想将冒泡更改为捕获,将顺序更改为out、middle、inner,那么将addEventListener的第三个参数更改为true即可,

 

 

   

标签:原生,触发,outer,js,middle,点击,inner,事件
From: https://www.cnblogs.com/yansunda/p/18359119

相关文章

  • 使用前端js库pica压缩图片
    pica浏览器中的高质量图像大小调整在浏览器中调整图像大小,无需像素化,速度相当快。自动选择最好的可用技术:webworkers、webassembly、createImageBitmap、纯JS。简单使用<scriptsrc="./plugins/pica.min.js"></script><script>functionresizeImage(img_path,file_name)......
  • JAVA毕业设计|ssm高校宿舍管理系统的设计与开发jsp包含文档代码讲解
    收藏点赞不迷路 关注作者有好处文末获取源码一、系统展示二、万字文档展示 基于ssm高校宿舍管理系统的设计与开发jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven 编号:ssm283一、系统展示二、万字文档展示第......
  • JAVA毕业设计|(免费)基于SSM的蛋糕甜品店管理系统的设计与开发jsp包含文档代码讲解
    收藏点赞不迷路 关注作者有好处编号:ssm544基于SSM的蛋糕甜品店管理系统的设计与开发jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven文末获取源码(免费|领源码)1.系统展示2.万字文档展示第5章系统详细设计5.1个人中......
  • 毕业设计|基于SSM的蛋糕甜品店管理系统的设计与开发jsp|免费|代码讲解
    收藏点赞不迷路 关注作者有好处编号:ssm544基于SSM的蛋糕甜品店管理系统的设计与开发jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven文末获取源码(免费|领源码)1.系统展示2.万字文档展示第5章系统详细设计5.1个人中......
  • 毕业设计|ssm基于java web的商铺租赁管理系统的jsp|免费|代码讲解
    收藏点赞不迷路 关注作者有好处编号:ssm405ssm基于javaweb的商铺租赁管理系统的jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven文末获取源码(免费领源码)1.系统展示2.万字文档展示第5章系统详细设计这个环节需要使......
  • gdb 查看 jsoncpp对象
    jsoncpp是c++使用较多的json库,gdb调试时,不方便查看json对象的信息,这里提供一种方法。json::value利用map实现树状对象,map的类型为std::maps<Json::Value::CZString, Json::Value>unionValueHolder{LargestIntint_;LargestUIntuint_;doublereal_;boolbo......
  • DBeaver 24.1.4版本发布,原生支持GaussDB!
    【摘要】华为云GaussDB一直致力于完善生态体系的构建,为用户提供最佳的使用体验。DBeaver作为一款开源的数据库管理软件,因其广泛的数据库兼容、丰富的功能特性以及多操作系统支持,成为了众多数据库开发者的首选。可喜的是,刚刚发布的DBeaver24.1.4版本,原生支持了GaussDB数据库,这一......
  • Vue事件处理
    点击按钮的时候,次数加一第一种:在click里面直接写js的代码需求:使用@click=“counter+=1”,代码如下:<buttontype="button"@click="counter+=1">按钮1</button><p>按钮1被点击的次数:{{counter}}</p>第二种:在vue的methods中进行定义<body><divid="app......
  • 基于 canal+mysql 实现 yjs-schema 数据实时同步
    MySQL自动同步开源工具在现代的数据处理中,数据同步是非常重要的一个环节。MySQL作为一个广泛应用的数据库管理系统,自动同步数据也是一个比较常见的需求。今天我们将介绍一些开源工具,可以帮助我们实现MySQL数据库的自动同步。1.MaxScaleMaxScale是一个开源的MySQLProxy工具,它......
  • 事件和委托的区别
    在C#中,事件(Event)和委托(Delegate)是紧密相关但具有不同含义的概念。以下是它们的主要区别:委托(Delegate):委托是一种类型,它表示一个方法的签名(即方法的参数列表和返回类型)。委托可以持有对一个或多个方法的引用,并且可以像普通方法一样被调用。委托是多播的,意味着一个委托......