jquery 悬停和 setTimeout/clearTimeOut

标签 jquery hover settimeout

我目前正在尝试制作一个带有子菜单的菜单。 这就是我想做的。

将鼠标悬停在链接 (#mylink) 上时,我想在其正下方显示一个 div(我们称其为“#submenu”)。 鼠标离开此链接后 5 秒后想要执行某个功能。

在这 5 秒的时间间隔内,如果我将鼠标悬停在 div (#submenu) 上,我想清除超时。 所以这个div不会在5秒后消失。

这是我的代码:

$(document).ready(function()
{
    $("#mylink").hover(
        function ()
        {
            $('#submenu').show();
        },
        function()
        {
            var timer = setTimeout(function(){$('#submenu').hide();}, 5000);
        }
    );

    $("#submenu").hover(
        function ()
        {
            clearTimeout(timer);
        },
        function()
        {
            $('#submenu').show();
        }
    );
}

最佳答案

SLaks 有正确的答案,但为了详细说明,您可以将 var time 放在函数处理程序之外。请注意,此示例并未使 timer 成为全局变量 - 它只是扩大了其范围,以便所有处理程序都可以使用它。

$(document).ready(function(){
    var timer;
    $("#mylink").hover(
        function(){
            $('#submenu').show();
        }, function(){
            timer = setTimeout(function(){$('#submenu').hide();}, 5000);
        }
    );

    $("#submenu").hover(
        function(){
            clearTimeout(timer);
        }, function(){
            $('#submenu').show();
        }
    );
}

关于jquery 悬停和 setTimeout/clearTimeOut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10299531/

相关文章:

javascript - 无法在 setTimeout 内设置 innerHTML

CSS 链接/悬停不工作

javascript - 关于 JQuery 的问题 - 按类获取某些选定项目的值

javascript - 为什么我的 Bootstrap 工具提示不起作用?

带有变量的 Jquery 动画高度?

尚未完成时,CSS 过渡不会顺利过渡回来

css - 悬停在不是后代的工具提示上时,将悬停样式保持在父级上

javascript - 在react.js中每3秒更改一次图像

javascript - Redux 或 setTimeout - 如何观察子组件中的 props 变化?

javascript - 如何使用循环返回 javascript 数组的某些部分?