Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS/jQuery-再次启动鼠标时重置MouseLeave_Javascript_Jquery_Html_Jquery Animate_Mouseover - Fatal编程技术网

Javascript JS/jQuery-再次启动鼠标时重置MouseLeave

Javascript JS/jQuery-再次启动鼠标时重置MouseLeave,javascript,jquery,html,jquery-animate,mouseover,Javascript,Jquery,Html,Jquery Animate,Mouseover,目前我有你在上面看到的代码。我希望发生的是: 当我将div#profile_栏悬停时,它会向下移动70像素。当我离开那个div,回到它,在2秒内,它必须停止MouseLeave功能,实际上什么都不应该发生 有人能给我一个提示或帮助我吗?尝试在你的鼠标盖上使用,这将删除排队等待稍后执行的任何效果,这样鼠标移动动画就不会发生 Edit:我在JSFIDLE上测试了我的建议,发现使用clearQueue和不使用没有区别。然后我看到了(强调我的): .delay()方法最适合在排队的jQuery效果之间进

目前我有你在上面看到的代码。我希望发生的是:

当我将div#profile_栏悬停时,它会向下移动70像素。当我离开那个div,回到它,在2秒内,它必须停止MouseLeave功能,实际上什么都不应该发生

有人能给我一个提示或帮助我吗?

尝试在你的
鼠标盖上使用,这将删除排队等待稍后执行的任何效果,这样鼠标移动动画就不会发生

Edit:我在JSFIDLE上测试了我的建议,发现使用
clearQueue
和不使用没有区别。然后我看到了(强调我的):

.delay()方法最适合在排队的jQuery效果之间进行延迟。因为它是有限的-例如,它不提供取消延迟的方法。delay()不是JavaScript本机setTimeout函数的替代品,后者可能更适合某些用例


所以,AlienWebguy的答案实际上就是你所需要的…

谢谢你的解释和帮助!
$("#profile_bar").mouseover(function()
{
    $("#profile_bar")stop(true).animate({
        marginTop : "0px"
    }, 300);
});

$("#profile_bar").mouseleave(function()
{
    $("#profile_bar").stop(true).delay(2000).animate({
        marginTop : "-70px"
    }, 300);
});
var timeouts = {};
$("#profile_bar").mouseover(function()
{
    clearTimeout(timeouts['profile_bar']);
    $("#profile_bar").stop(true).animate({
        marginTop : "0px"
    }, 300);
});

$("#profile_bar").mouseleave(function()
{
    timeouts['profile_bar'] = setTimeout(function(){
        $("#profile_bar").stop(true).animate({
            marginTop : "-70px"
        }, 300);
    }, 2000);
});