当前位置: 首页 > article >正文

前端学习-事件解绑,mouseover和mouseenter的区别(二十九)

目录

前言

解绑事件

语法

鼠标经过事件的区别

鼠标经过事件

示例代码

两种注册事件的区别

总结



前言

人道洛阳花似锦,偏我来时不逢春

解绑事件

on事件方式,直接使用null覆盖就可以实现事件的解绑

语法

btn.onclick = function(){
    alert('点击了')
}
btn.onclick = null;

 const ben = document.querySelector('button');
    ben.addEventListener('click', function fn() {
      console.log('click');
    })
    ben.removeEventListener('click', fn);

注意:匿名函数无法被解绑

鼠标经过事件的区别

鼠标经过事件

mouseover和mouseout会有冒泡效果

mouseenter和mouseleave没有冒泡效果(推荐)

示例代码

<!DOCTYPE html>
<html lang="en">
​
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .dad {
      width: 200px;
      height: 200px;
      background-color: red;
    }
​
    .son {
      width: 100px;
      height: 100px;
      background-color: blue;
    }
  </style>
</head>
​
<body>
  <button id="myButton">点击</button>
  <div class="dad">
    <div class="son"></div>
  </div>
  <script>
    const ben = document.querySelector('#myButton');
    const dad = document.querySelector('.dad');
    const son = document.querySelector('.son');
​
    // 定义命名函数
    function handleClick() {
      console.log('click');
    }
​
    function handleMouseOver() {
      console.log('over');
    }
​
    function handleMouseOut() {
      console.log('out');
    }
​
    // 添加事件监听器
    ben.addEventListener('click', handleClick);
    dad.addEventListener('mouseenter', handleMouseOver);
    dad.addEventListener('mouseleave', handleMouseOut);
​
    // 示例:在按钮点击后移除事件监听器
    ben.addEventListener('click', function () {
      ben.removeEventListener('click', handleClick);
      dad.removeEventListener('mouseenter', handleMouseOver);
      dad.removeEventListener('mouseleave', handleMouseOut);
      console.log('事件已解绑');
    });
  </script>
</body>
​
</html>

两种注册事件的区别

传统on注册(L0)

同一个对象,后面注册的事件会覆盖前面注册(同一个事件)

直接使用null覆盖就可以实现事件的解绑

都是冒泡阶段执行的事件

监听注册(L2)

语法: addEventListener(事件类型,事件处理函数,是否使用捕获)

后面注册的事件不会覆盖前面注册的事件(同一个事件)

可以通过第三个参数去确定是在冒泡或者捕获阶段执行必须使用removeEventListener(事件类型,事件处理函数,获取捕获或者冒泡阶段)

匿名函数无法被解绑


总结

春风得意马蹄疾,一日观尽长安花


http://www.kler.cn/a/526912.html

相关文章:

  • python 使用Whisper模型进行语音翻译
  • 【linux】Linux 常见目录特性、权限和功能
  • MySQL数据库(二)
  • 如何用函数去计算x年x月x日是(C#)
  • 指针(C语言)从0到1掌握指针,为后续学习c++打下基础
  • docker配置mysql并使用mysql connector cpp编程
  • 【MySQL】MySQL客户端连接用 localhost和127.0.0.1的区别
  • SQLAlchemy 2.0的简单使用教程
  • 互斥锁/信号量实现5个线程同步
  • Redis|前言
  • FreeRTOS从入门到精通 第十六章(任务通知)
  • 玄武计划--干中学,知行合一
  • 全网首发,MacMiniA1347安装飞牛最新系统0.8.36,改造双盘位NAS,超详细.36,改造双盘位nas,超详细
  • Teleporters( Educational Codeforces Round 126 (Rated for Div. 2) )
  • 爬虫基础(六)代理简述
  • jvisualvm工具使用
  • 哈工大:屏蔽LLM检索头训练忠实性
  • 158页精品PPT | 机械行业数字化生产供应链产品解决方案
  • 讯飞星火大模型API使用Python调用
  • 深入理解MySQL 的 索引
  • java的Stream流
  • Redis入门概述
  • 嵌入式知识点总结 Linux驱动 (七)-Linux驱动常用函数 uboot命令 bootcmd bootargs get_part env_get
  • 计算机图形学 通过叉乘判断一个点是否在三角形内
  • Java进阶six junit单元测试,反射,注解,动态代理
  • OVS-DPDK