jQuery动画:一旦鼠标停止动画停止

moe*_*oey 5 jquery animation

我试图让a div滑出并在悬停时,即鼠标分别进入和离开.然而,当我多次进出时,div不停地来回滑动,基本上是我悬停的次数.请参考这个jsFiddle示例.

正如你可能已经猜到的那样,div一旦鼠标在元素之外,我希望能够停止(即滑入),无论我多少次在它上面.我认为我对jQuery动画的理解缺少一些东西.

$("#state-slider").hover(function() {
  $(this).animate({
    left: '0'
  }, 500);
}, function() {
  $(this).animate({ left: "-270" }, 500);
});
Run Code Online (Sandbox Code Playgroud)

谢谢.

Tom*_*han 17

你需要jQuery .stop()函数.在开始新动画之前将其插入命令链中,以中断任何正在进行的动画.

$('#state-slider').hover(function() {
    $(this).stop().animate({ left: 0 }, 500);
}, function() {
    $(this).stop().animate({ left: -270 }, 500);
});
Run Code Online (Sandbox Code Playgroud)

工作jsFiddle =)

  • @ Siku-Siku.Com:如果你将鼠标悬停在div上,移开它然后再快速返回,那么在鼠标输入和鼠标离开时使用`.stop()`的原因就变得很明显了.用户期望的是div"转身",即*停止它正在做的事情而不是做新事物*.这正是`.stop()`的作用. (2认同)