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

目录

前言

解绑事件

语法

鼠标经过事件的区别

鼠标经过事件

示例代码

两种注册事件的区别

总结



前言

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

解绑事件

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

语法

javascript 复制代码
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没有冒泡效果(推荐)

示例代码

javascript 复制代码
<!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(事件类型,事件处理函数,获取捕获或者冒泡阶段)

匿名函数无法被解绑


总结

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

相关推荐
崔庆才丨静觅2 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60613 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了3 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅3 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
执笔论英雄3 小时前
【大模型学习cuda】入们第一个例子-向量和
学习
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
崔庆才丨静觅3 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅4 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment4 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅4 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端