jquery hover - 如果游标没有重新悬停在元素上,则在延迟后隐藏

时间:2013-06-07 12:30:58

标签: javascript jquery hover delay

我的页面上有一个图标,在500毫秒的延迟后弹出一个带有更多细节的连接盒。

http://jsfiddle.net/qSe6t/1/f

然后当您从图标和弹出窗口中鼠标拖出时,在延迟500毫秒后,弹出窗口将被隐藏。

我遇到的麻烦是试图阻止隐藏发生,光标在500毫秒延迟期间重新进入图标/弹出窗口。

这是代码......

<div id="accountIcon">
    <div id="accountPopup"></div>
</div>

CSS:

#accountIcon {
    position:relative;
    height:58px;
    width:80px;
    cursor:pointer;
    background-color:#000;
}
#accountPopup {
    position:absolute;
    top:58px;
    width:400px;
    height:200px;
    background-color:#CCC;
    display:none;
}

jQuery的:

$("#accountIcon").hover(function () {
    $("#accountPopup").delay(500).show(0);
}, function () {
    $("#accountPopup").delay(500).hide(0);
});

2 个答案:

答案 0 :(得分:6)

你需要jquery .stop(true,true)来停止该元素上的所有当前计时器/事件。

我把你的小提琴分开了

http://jsfiddle.net/qSe6t/3/

$("#accountPopup").stop(true,true).delay(500).hide(0);

答案 1 :(得分:3)

var timeout;
$("#accountIcon").hover(function () {
    clearTimeout(timeout);
    $("#accountPopup").delay(500).show(0);
}, function () {
    timeout = setTimeout(function(){
      $("#accountPopup").delay(500).hide(0);
    },500);
});

演示---> http://jsfiddle.net/qSe6t/2/