首页 > 其他分享 >js 事件冒泡 事件捕获

js 事件冒泡 事件捕获

时间:2024-02-08 12:00:50浏览次数:37  
标签:调用 元素 js 点击 事件 box1 冒泡

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>test</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      body {
        position: relative;
      }
      .box2 {
        height: 50px;
        width: 150px;
        background: blue;
        position: absolute;
        top: 0px;
        left: 0px;
      }
      .box1 {
        height: 50px;
        width: 200px;
        background: red;
        position: absolute;
        top: 0px;
        left: 50px;
      }
    </style>
  </head>
  <body>
    <div class="box1">
      <div class="box2"></div>
    </div>

    <script>
      const box1 = document.querySelector(".box1");
      const box2 = document.querySelector(".box2");
      box1.addEventListener(
        "click",
        (e) => {
          e.stopPropagation();
          console.log("box1");
        },
        true
      );
      box2.addEventListener(
        "click",
        (e) => {
          e.stopPropagation();
          console.log("box2");
        },
        false
      );
    </script>
  </body>
</html>

事件冒泡: 点击事件由子元素向父元素传递 即 先调用子元素的点击事件再调用父元素的点击事件

注意点:浏览器默认采用事件冒泡,即 不用做任何特殊设置,给元素添加点击事件后,点击元素,浏览器先调用子元素的方法,再调用父元素的方法

事件捕获: 点击事件由父元素向子元素传递,即 先调用父元素的点击事件再调用子元素的点击事件

注意点:需要设置addEventListener的第三个参数为true才能开启事件捕获, 给元素添加点击事件并设置捕获后,点击元素,浏览器先调用父元素的方法,再调用子元素的方法

同时需要注意: 如果父元素设置为事件捕获, 子元素同时设置为事件冒泡,那么会先按照事件捕获进行处理 父元素的点击事件被调用 如果父元素没有阻止传递,则继续调用子元素的方法

 

标签:调用,元素,js,点击,事件,box1,冒泡
From: https://www.cnblogs.com/laremehpe/p/18011704

相关文章

  • 解决双击事件触发两次单击事件
    问题在写前端的时候,偶然发现,当同一个标签同时绑定了双击事件和单击事件在触发双击事件的时候,会先触发两次单击事件,这显然是不符合预期的解决办法可以通过增加一个延时来解决这个问题写一个按钮这里写一个按钮来演示<body><buttononclick="handleClick()"ondbl......
  • Array类 冒泡排序 稀疏数组
    Arrays类数组的工具类java.util.Arrays由于数组对象本身并没有方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作;查看JDK帮助文档Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使......
  • Chrome修改添加JS与dll交互
    注入dll后拦截js相关函数,可以通讯以及控制安全沙箱问题前面有写文章为了方便快速,使用Uint8Array::Set函数拦截之前尝试了crypto.subtle相关的函数,这些函数速度很慢,而且是异步,很不方便C++的dll代码BOOL CChrome::HookUint8ArraySetByte(){ BYTE *pCode; BOOL......
  • 一个冷门的js加密逆向分析(二)
    前天发了一片js加密分析的文章,今天继续来说第二层加密是什么样的。上源代码window[""+"f"+"3"+"2"+"0"+"6"+"b"+"1"+""]=function(){;(function(v509de,m27adb,me846d07,w4656a){......
  • `resp.text` 和 `resp.json()` 是处理 `requests` 库返回的响应对象中的两个不同方法,
    resp.text和resp.json()是处理requests库返回的响应对象中的两个不同方法,用于获取服务器响应的内容。它们的区别在于:resp.text:resp.text返回响应的内容作为字符串。适用于任何响应内容,无论响应内容是HTML、JSON、XML还是纯文本。如果响应内容是JSON格式,可以使用resp.tex......
  • eslint报错:Parsing error: No Babel config file detected for E:\xxx\index.config
    eslint根据eslint配置文件的parserOption,知道了要使用babel对代码进行解析,但是解析babel需要使用babel配置文件,由于找不到配置文件(babel配置文件默认需要放在根目录下),所以会报错。因此,添加requireConfigFile:false,本质上是告诉eslint,不用查找这个配置文件了,虽然表面上可以解决这......
  • JS使用EditableProTable案例
    EditableProTable是AntDesignPro中的一个可编辑表格组件,可以方便地实现表格数据的编辑和更新。下面是一个简单的示例,演示如何在React中使用EditableProTable组件:首先,确保你已经安装了AntDesignPro相关的依赖包。然后,可以按照以下步骤创建一个简单的可编辑表格:1、创......
  • js 双对象对比拷贝数据
    应用场景:1、两个深层次对象2、第一个对象为模板对象,第二个对象为返回的实际数据对象(简称实例对象)3、如果一个属性在实例对象内,就拿取实例对象的这个属性;如果没有,就从模板对象里面拿取。如果某个属性是数组对象,那么实例对象的这个属性内每一个数组对象都要与模板对......
  • vue 事件修饰符
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"/><title>事件修饰符</title><!--引入Vue--><scripttype="text/javascript"src="../js/vue.js"></script><style>*{mar......
  • (填坑)考古,如何追索Jsp代码。
    我现在要找到一个按钮指向路径错误的原因。1.找到jsp页面——userlist.jspweb正常是不会暴露jsp文件原名的,这里我用vscode全文检索页面中的方法名unlock找到的。2.根据页面布局定位按钮标签,发现是个自定义标签——<t:dgToolBar/>3.jsp最上边有自定义标签的引用声明 ......