【发布时间】:2012-06-04 14:44:07
【问题描述】:
在我正在开发的 web 应用程序中,我想创建一些 slider divs,它们将分别通过 mouseover 和 mouseout 上下移动。我目前使用 JQuery 实现了它hover() 函数,通过使用animate() 并根据需要减少/增加它的top css 值。实际上,这非常有效。
问题是它往往会卡住。如果将鼠标移到它上面(尤其是靠近底部),然后快速移开它,它会连续上下滑动,直到完成 3-5 个循环才会停止。对我来说,这个问题似乎与一个动画在另一个动画完成之前开始有关(例如,两个动画试图运行,所以它们来回滑动。)
好的,现在是代码。这是我正在使用的基本 JQuery:
$('.slider').hover(
/* mouseover */
function(){
$(this).animate({
top : '-=120'
}, 300);
},
/* mouseout*/
function(){
$(this).animate({
top : '+=120'
}, 300);
}
);
我还重新创建了 JSFiddle 中的行为。
对正在发生的事情有任何想法吗? :)
==EDIT== 更新的 JSFiddle
【问题讨论】:
-
当我在小提琴中快速移除它时,它似乎只上下滑动一次
-
当您将鼠标悬停在 innerContent 上时,它会向上移动,从而使其不再位于鼠标下方,触发 mouseleave 事件,使其动画回到原来的位置。你到底想做什么?
-
@Kevin,他说的问题是,有时当您将鼠标移到滑块上一次时,动画会执行多个循环,即多次上下移动。
-
@sv_in 是的,但这是由于 div 从鼠标下方动画出来,触发了离开事件,这反过来又在动画返回时再次触发了进入事件,然后是离开再次导致循环。
-
查看我的更新答案,我解决了闪烁问题。
标签: javascript jquery animation sliding