jquery - jQuery悬停触发“鼠标离开”而不离开光标
问题描述
我有一个li
带有嵌套的按钮input
。li
我在元素中添加了带有 jQuery 的悬停功能。它工作正常,除非当我li
非常快速地将鼠标悬停进出按钮时,mouseenter
不会触发而是只会mouseleave
触发,即使仍然悬停在元素上也是如此。
我知道问题是由计时器引起的,但我不知道如何设置它以按预期工作。
$(document).ready(function() {
$('.topMenu__item--button').hover(function () {
var hoverTimeout;
clearTimeout(hoverTimeout);
$(this).addClass('topMenu__item--button--hover');
}, function() {
var $self = $(this);
hoverTimeout = setTimeout(function() {
$self.removeClass('topMenu__item--button--hover');
}, 500);
});
});
解决方案
您需要将hoverTimeout
声明移动到两个函数的范围内:
$(document).ready(function() {
var hoverTimeout;
$('.topMenu__item--button').hover(function() {
clearTimeout(hoverTimeout);
$(this).addClass('topMenu__item--button--hover');
}, function() {
var $self = $(this);
hoverTimeout = setTimeout(function() {
$self.removeClass('topMenu__item--button--hover');
}, 500);
});
});
您还应该注意,最好将此悬停行为放入 CSS 中,因为它的性能比 JS 好得多。
推荐阅读
- android - Android 中的画布性能
- elixir - 为什么 Phoenix LiveView 函数 `push_event` 未定义?
- matlab - 来自文件名的 Matlab 数据存储时间表日期
- security - 可以在 Oracle 11g 中加密主键(和 FK)吗?
- excel - Excel 目标 [140]:为列设置绑定时出错。绑定状态为“DT_NTEXT”
- reactjs - 如何正确测试此减速器?
- asp.net-core - http://localhost:5000/company/getCompanyById/3 的 Asp.Net Core Http 失败响应:404 Not Found
- python - 将 Ubuntu Python 3.8.2 升级到 Python 3.8.5
- c# - 任务/等待填充数据表 - 没有性能改进
- ignite - Ignite 自定义 SQL 函数是在服务器节点还是客户端节点上执行?