首先:我搜索了所有关于 clearTimeout 不起作用的问题都是关于变量范围的问题,而不是我的情况。
我需要在 X 秒后自动隐藏标题而不进行交互,所以我创建了两个函数,startMenuTimeout
并且clearMenuTimeout()
,我的这部分代码如下所示:
var menuTimeout = null;
function startMenuTimeout(){
menuTimeout = setTimeout(function(){
$('[auto-header]').removeClass('-visible');
}, 2000);
}
function clearMenuTimeout(){
clearTimeout(menuTimeout);
}
当用户向上滚动时,我使标题可见并开始超时,然后,mouseenter
我清除超时。
问题是,有时它不会清除超时,如果你上下滚动几次,在 2 秒超时后,菜单会上升。
我在codepen上重现了这个问题,点击这里访问。