首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery/JS setTimeout/clearTimeout

jQuery/JS setTimeout/clearTimeout
EN

Stack Overflow用户
提问于 2013-03-19 09:40:36
回答 1查看 1.1K关注 0票数 1

我不是非常精通这一点,但我有一个导航项目,在悬停时,一个带有搜索表单的div滑下。目前,当您将鼠标移到div上,然后再移出时,div将保持打开状态,直到您单击close按钮。

我正在尝试这样做,这样当你用鼠标移出div幻灯片时,几秒钟后就会备份,除非用户仍然在div或nav链接上(即,他们正在填写搜索表单)。

这是我到目前为止所知道的:

代码语言:javascript
复制
$("#services_link").mouseover(function() {
        $("#services_link").css('background-position','left -73px');
        $("#vendors_dropdown").slideDown(function() {
            setTimeout(HideMe, 4000);
        });
    });

    function HideMe() {
        $("#services_link").css('background-position','left 0');
        $("#vendors_dropdown").slideUp();
    }

这使我的变量就像div在链接悬停时向下滑动,4秒后向上滑动一样(无论鼠标光标在哪里)。因此,如果鼠标光标位于链接或div上,我只需要div保持打开状态。

我已经看了三四个类似的问题(和答案),但没有一个真正做到了这一点。setTimeout (和clearTimeout)对我来说有点陌生,所以请原谅这个菜鸟问题。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-19 09:44:19

绑定mouseenter和mouseleave。您需要在鼠标离开时设置超时,但如果再次出现鼠标输入,则将其重置。

尝试只查看选择的答案here,以了解如何执行我所说的操作。

如下所示:

代码语言:javascript
复制
var timeout;
$("#services_link, #vendors_dropdown").mouseenter(function() {
    window.clearTimeout(timeout);
    $("#services_link").css('background-position','left -73px');
    $("#vendors_dropdown").slideDown();
}).mouseleave(function(){
    timeout = window.setTimeout(HideMe, 4000);
});

function HideMe() {
    $("#services_link").css('background-position','left 0');
    $("#vendors_dropdown").slideUp();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15490078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档