jquery mouseleave和mouseout的区别

本文探讨了在实现下拉菜单效果时遇到的mouseout事件导致的菜单频繁消失问题。作者指出,mouseout事件在鼠标移过元素的margin、border和padding区域,以及子元素时都会触发,这在下拉菜单中造成不便。解决方案是改用mouseleave事件,该事件能更准确地判断鼠标是否真正离开元素,避免了在菜单元素间移动时的误触发,从而解决了问题。

今天做一个下拉菜单的效果,发现用mouseout事件判断鼠标是否移出菜单让菜单消失的判断有很大问题。

第一是鼠标移动到了元素的margin border padding区域的时候会触发mouseout。

第二是子元素上鼠标移开也会让父元素触发mouseout。

这就导致鼠标在进入下拉菜单和在菜单元素之间移动的时候触发大量的mouseout,菜单总是消失。

改为使用mouseleave事件以后问题消失,说明mouseleave既会把margin border padding视为组件内部,也不会反复的在其子元素之间移动鼠标的时候触发。

jQuery中的mouseleavemouseout区别是什么? 根据引用中的资料,mouseentermouseleave事件不会冒泡,而mouseovermouseout事件会冒泡。具体来说,当鼠标指针进入或离开一个元素时,mouseentermouseleave只会触发被鼠标指针直接进入或离开的元素上的事件处理程序。而mouseovermouseout事件会在鼠标指针穿过元素边界时触发,包括进入或离开子元素的边界。 以引用中的代码为例,当鼠标指针进入或离开.box元素时,分别会执行相应的mouseentermouseleave事件处理程序。而当鼠标指针进入或离开.parent元素时,由于事件会冒泡,所以也会触发.box元素上的相应事件处理程序。 而当使用mouseovermouseout事件时,会在鼠标指针进入或离开.box元素及其子元素时触发对应的事件处理程序。因此,当鼠标指针进入或离开子元素时,会分别触发.parent元素.box元素上的事件处理程序。 综上所述,mouseleavemouseout在不冒泡的情况下触发,而mouseentermouseover会在冒泡的情况下触发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [jQuerymouseout()mouseleave()之间的区别](https://blog.youkuaiyun.com/cyan20115/article/details/106554798)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [jQuery常用事件方法——mouseenter、mouseleave、hover方法](https://blog.youkuaiyun.com/shaxiaobai/article/details/115280184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fancybit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值