停止jQuery动画进度条

Stop jQuery animated progress bar

我想通过单击按钮停止进度条,但动画总是完成到定义的 50%。我错过了什么?

animation = ""

var getPercent1 = .5; 
var getProgressWrapWidth1 = $('.progress-wrap').width();
var progressTotal1 = getPercent1 * getProgressWrapWidth1;
  
 // .stop() used to prevent animation queueing
 $('.progress-bar').stop().animate({
  left: progressTotal1
 }, 3000);
 
 animation = setTimeout(function() {
  var getPercent2 = .8;
  var getProgressWrapWidth2 = $('.progress-wrap').width();
  var progressTotal2 = getPercent2 * getProgressWrapWidth2;   
  
  $('.progress-bar').stop().animate({
   left: progressTotal2
  }, 3000);
 }, 3100); 
 
function stopProgress() {
 clearTimeout(animation);
 $('progress-bar').stop();
}
.progress{width:100%;height:50px;border-radius:0}.progress-wrap{background:#18AC56;margin:20px 0;overflow:hidden;position:relative;-webkit-transition:background 1s;-moz-transition:background 1s;-o-transition:background 1s;transition:background 1s;}.progress-wrap .progress-bar{background:#ddd;left:0;position:absolute;top:0;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="progress-wrap progress">
    <div class="progress-bar progress"></div>
</div> 

<button type="button" onClick="stopProgress()">click to stop</button>

你少了一个'.'

$('progress-bar').stop(); 

应该是

$('.progress-bar').stop();

旁注:我建议您使用 Velocity.js 制作动画...它的语法与 jquery 的动画相同,但效率更高。