正在停止 jquery 个进程

Stopping jquery process

我有一个 div 隐藏在页面之外,其中一部分是可见的,例如:

div{
    left: -100px;
    width: 150px;
    height: 50px;
}

我用jquery来显示整个div:

$("div").hover(function(){ 
    $("div").animate({left: '0px'});
},function(){
    $("div").animate({left: '-100px'}); 
});

当我 hover 越过 div 并快速 unhover 多次时,似乎播放动画的次数与我这样做的次数相同。如果我停止将鼠标悬停在 div 上,如何让它在动画中停止,以及如何让动画仅在我将鼠标悬停在它上面一定时间后才开始。

您可以使用.stop()停止上一个动画。

$("div").hover(function() {
  $("div").stop().animate({
    left: '0px'
  }, "slow");
}, function() {
  $("div").stop().animate({
    left: '-100px'
  });
}, "slow");
div {
  left: -100px;
  width: 150px;
  height: 50px;
  background-color: blue;
  position: absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div></div>

如果你想让它等到你悬停一段时间后才开始动画,你可以使用setTimeout,你可以在unhover函数中取消超时。

var hoverTimer;
$("div").hover(function() {
  hoverTimer = setTimeout(function() {
    $("div").stop().animate({
      left: '0px'
    }, "slow");
  }, 1000);
}, function() {
  clearTimeout(hoverTimer);
  $("div").stop().animate({
    left: '-100px'
  });
}, "slow");
div {
  left: -100px;
  width: 150px;
  height: 50px;
  background-color: blue;
  position: absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div></div>