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

前端学习-事件解绑,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.lryc.cn/news/530012.html

相关文章:

  • 独立游戏RPG回顾:高成本
  • 10.4 LangChain核心架构揭秘:模块化设计如何重塑大模型应用开发?
  • 【学习笔记】深度学习网络-正则化方法
  • 网站快速收录:如何优化网站头部与底部信息?
  • 网络测试工具
  • 使用HttpClient和HttpRequest发送HTTP请求
  • 软件工程概论试题五
  • 填充每个节点的下一个右侧节点指针力扣--116,117
  • DBUtils中QueryRunner(空参,传数据源)构造方法的区别及应用场景
  • STM32 TIM输入捕获 测量频率
  • Autosar-以太网是怎么运行的?(Davinci配置部分)
  • 16.[前端开发]Day16-HTML+CSS阶段练习(网易云音乐五)
  • langchain 实现多智能体多轮对话
  • Java-数据结构-优先级队列(堆)
  • C++实现状态模式
  • FreeRTOS学习笔记2:FreeRTOS的基础知识
  • 计算机网络之计算机网络的分类
  • 从理论到实践:Linux 进程替换与 exec 系列函数
  • Flutter常用Widget小部件
  • 微信小程序实战0 设置
  • 2025开源DouyinLiveRecorder全平台直播间录制工具整合包,多直播同时录制、教学直播录制、教学视频推送、简单易用不占内存
  • 使用 postman 测试思源笔记接口
  • 当WebGIS遇到智慧文旅-以长沙市不绕路旅游攻略为例
  • 阿里最新普通x231 逆向分析
  • php的使用及storm环境部署
  • 高可用 Keepalived 服务部署流程
  • 【新春特辑】2025年1月科技浪潮中的AI最新时事与科技趋势
  • 解决Django非ORM模型提示初始化request问题
  • G. XOUR
  • 有没有个性化的UML图例