mouseover:当鼠标移入元素或其子元素都会触发事件,所以有一个重复触发,冒泡过程。对应的移除事件是mouseout

mouseenter:当鼠标移除元素本身(不包含元素的子元素)会触发事件,也就是不会冒泡,对应的移除事件是mouseleave

异同体现在两个方面:

1. 是否支持冒泡

2.事件的触发时机

mouseenter事件的情况

当鼠标从元素的边界之外移入元素的边界之内时,事件被触发。而鼠标本身在元素边界内时,要触发该事件,必须先将鼠标移出元素边界外,再次移入才能触发。

也就是说:mouseover支持事件冒泡,而mouseenter不支持事件冒泡

由于mouseenter不支持事件冒泡,导致在一个元素的子元素上进入或离开的时候会触发其mouseover和mouseout事件,但不会触发mouseenter和mouseleave事件。

如何模拟mouseenter事件

可见mouseover事件因其具有冒泡的性质,在子元素内移动的时候,频繁被触发,如果我们不希望如此,可以使用mouseenter事件代替之,但是早期只有ie浏览器支持该事件,虽然现在大多数高级浏览器都支持了mouseenter事件,但是难免会有些兼容问题,所以如果可以自己手动模拟,那就太好了。

mouseenter:当鼠标移入某元素时触发。

mouseleave:当鼠标移出某元素时触发。

mouseover:当鼠标移入某元素时触发,移入和移出其子元素时也会触发。

mouseout:当鼠标移出某元素时触发,移入和移出其子元素时也会触发。

mousemove:鼠标在某元素上移动时触发,即使在其子元素上也会触发。

mouseout、mouseover和mouseleave、mouseenter最大的区别,在于子元素连带触发。

<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title><style>.a{width: 500px;height: 500px;background: aliceblue;}.b{width: 200px;height: 200px;background: beige;}.c{width: 100px;height: 100px;background: violet;}</style>
</head>
<body><div class="a">A<div class="b"onmouseenter="mouseenter()"onmouseleave="mouseleave()"onmouseout="mouseout()"onmouseover="mouseover()"onmousemove="mousemove()">B<div class="c">C</div></div></div><script>function mouseenter(){console.log('mouseenter')}function mouseleave(){console.log('mouseleave')}function mouseout(){console.log('mouseout')}function mouseover(){console.log('mouseover')}function mousemove(){console.log('mousemove')}</script>
</body>
</html>

从A元素到C元素,再从C回到A,控制台输出如下

js中鼠标事件mouseover、mouseenter和mouseleave、mouseout的区别相关推荐

  1. java 中鼠标事件_[Java教程]js中鼠标事件总结

    [Java教程]js中鼠标事件总结 0 2017-07-11 00:00:19 js中鼠标事件主要有onclick,onmousedown,onmouseup,oncontextmenu,ondblc ...

  2. Web前端js中鼠标事件

    0 onmousemove鼠标在某元素上移动 0 onmouseover鼠标移到某元素之上(事件冒泡): 0 onmouseout鼠标移出某元素: 0 omouseleave鼠标离开某元素: 0 on ...

  3. 如何调试JS中鼠标悬停事件影响的元素?

    如何调试JS中鼠标悬停事件影响的元素? 在日常的前端开发中,我们经常要调试许多其他开发者写的网站和代码.此时我们往往会打开浏览器的开发者工具,在 Elements,Console,Network,So ...

  4. 面试题58:javascript中鼠标事件有哪些

    鼠标事件有: 1.click(单击)事件: 2.dblclick(双击)事件: 3.mousedown事件: 4.mouseup事件: 5.mouseout事件: 6.mouseover事件: 7.m ...

  5. JavaScript系列—简述JS中的事件委托和事件代理

    JS中的事件委托和事件代理 什么是事件委托? 事件委托还有一个名字叫事件代理,JS高程上讲:事件委托就是利用事件冒泡,只制定一个时间处理程序,就可以管理某一类型的所有事件.我用取快递来解释这个现象: ...

  6. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

       前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...

  7. JS中的事件基础知识

    本文首发于个人博客:www.wyb.plus JS作为一门事件驱动型的语言,了解与事件有关的知识是十分必要的. JS中与事件有关的概念非常多,本文尽量整理完善. 作者:王雨波 qq:760478684 ...

  8. js中hover事件时候的BUG以及解决方法

    js中hover事件时候的BUG以及解决方法 参考文章: (1)js中hover事件时候的BUG以及解决方法 (2)https://www.cnblogs.com/mmykdbc/p/7464050. ...

  9. 如何正确使用Node.js中的事件

    by Usama Ashraf 通过Usama Ashraf 如何正确使用Node.js中的事件 (How to use events in Node.js the right way) Before ...

  10. return true Java_[Java教程]js中return,return true,return false的用法及区别

    [Java教程]js中return,return true,return false的用法及区别 0 2015-11-16 23:00:03 1.语法及返回方式 ①返回控制与函数结果 语法为:retu ...

最新文章

  1. nginx怎么部署php项目,nginx怎么正确部署前端项目
  2. Excel如何快速清除单元格所有内容
  3. 图像局部显著性—点特征(FREAK)
  4. 50万数据生成6位数不重复字符串_R语言系列3:高级数据管理
  5. 转转集团二手双11大促:长沙用户“秒杀”99新iPhone12成首单
  6. 第二章 比特币的去中心化的方式
  7. [最小生成树][Dij] Jzoj P5818 做运动
  8. 贝叶斯集锦:从MC、MC到MCMC
  9. 数据库实验——T-SQL编程
  10. 云服务器安全组开放所有端口
  11. 电脑重装系统Win10关闭网速限制的方法
  12. VM-EXIT(EPT Violation)调用链
  13. 考研807程序设计C语言教程,中央财经大学
  14. Jira 史诗指南 (2022)
  15. 解决虚拟机exis安装群晖时,synology assistant(群晖助手)可以搜索到服务器,但分配的ip无法访问
  16. 字符编码OneHotEncoder
  17. 华师计算机在线作业答案,2016春季华师计算机基础在线作业答案
  18. linux中bash是什么命令,Bash简介 Bash是如何处理命令的
  19. react 点击弹窗之外关闭弹窗 demo
  20. LeetCode 1.Minimum Path Sum 2.Unique Paths I and II

热门文章

  1. [Python] 开发一个局域网联机小游戏
  2. c语言网络病毒代码大全,C语言病毒 - 各类源码 - 中国红客联盟 - Powered by HUC
  3. Mysql:实战2000W条数据实现全文检索
  4. 批处理for命令截取字符串
  5. bat批处理之for循环
  6. 雨林木风YN9.9三分极速速终结版 http://www.51ylmf.cn
  7. 绿色版飞信LibFetion提示用户密码错误的解决办法,直接改用飞信号登录即可
  8. 时间轴app哪个好?可以记录自己过去经历的时间轴便签
  9. 【笔记环境】Typora+Joplin+PicGo+Gitee+Onedrive
  10. 社会工程学攻击的三个典例