Javascript JS/jQuery-再次启动鼠标时重置MouseLeave
目前我有你在上面看到的代码。我希望发生的是: 当我将div#profile_栏悬停时,它会向下移动70像素。当我离开那个div,回到它,在2秒内,它必须停止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效果之间进
鼠标盖上使用,这将删除排队等待稍后执行的任何效果,这样鼠标移动动画就不会发生
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);
});