我有一个 jquery 悬停功能,有两个动画和三个 .css 函数。当你快速翻车时,会有奇怪的射击混合。我使用 jsbin 进行了设置,您可以看到何时翻滚然后离开它会提示悬停,当您以正常速度执行时,它可以正常工作,当您快速执行时,您可以看到错误。我需要帮助解决这个问题,我能得到的任何建议都会非常有帮助,在此先感谢。
问问题
138 次
1 回答
0
您需要使用 jQuery.finish() 函数,这样您就不会在鼠标快速移动后出现一长串动画。因此,更改以下行以在动画之前包含 .finish() 函数:
$('.backing').finish().fadeOut();
$('#'+gymlocation+'_back').finish().fadeIn();
$('.backing').finish().fadeOut();
$('#'+current_back).finish().fadeIn();
然后,您的鼠标悬停/移出区域仅限于文本而不是整个彩色区域 - 这有点奇怪,但可能是您想要的?所以我没有为此提出解决方案。
您还具有重复的 javascript 功能,这可能会导致不需要的动画。删除倒数第二段代码:
$('#menu-wrapper').mouseleave(function() { ... and everything in-between ... });
因为你已经有了这个调用hover()
这里的动画:
$('#menu-wrapper').hover( handlerIn, handlerOut );
与第二个论点handlerOut
。
现在似乎好多了-不确定这是否是您所期望的。
编辑
首先,您不应该将完成功能添加到所有动画中。请看我的回答。您已将其添加到不应该的迷你菜单动画中。
您的问题出在这一行:
$('#menu-text, .backing').css({
display:'none'
});
将其更改为:
$('#menu-text, .backing').fadeOut();
为什么是因为您有其他动画会影响文本菜单的显示属性,然后在隐藏它后使其可见。fadOut() 的持续时间比鼠标悬停的时间长。因此,它似乎运行良好。
这是链接:http: //jsbin.com/isigoz/87/
于 2013-06-18T03:18:26.383 回答