为什么jQuery .animate回调发生在动画之前?

big*_*axi 3 javascript jquery jquery-animate

为什么.animate在动画之前会发生这个函数的回调?

参考:http://jsfiddle.net/93Qyq/7/

这是Javascript部分:

$('#clickButton').click(function() {
  $('.spanClass').animate({
    left: '+=200'
  }, 500, positionReset());
});

function positionReset(){
    alert('complete!');
   $('.spanClass').animate({'left':'-=200'})
}
Run Code Online (Sandbox Code Playgroud)

这是HTML:

<div class="divClass">
<span id="a" class="spanClass">A</span>
<span id="b" class="spanClass">B</span>
<span id="c" class="spanClass">C</span>
</div>
<br>
<div id="clickButton">CLICK BUTTON</div><br>?
Run Code Online (Sandbox Code Playgroud)

Fré*_*idi 6

那是因为你没有将你的函数传递给animate()- 你正在调用它,并传递它返回的值(这不是一个函数,随后被框架忽略).

您必须在函数后删除括号:

$('.spanClass').animate({
    left: '+=200'
}, 500, positionReset);  // No parentheses.
Run Code Online (Sandbox Code Playgroud)

代替:

$('.spanClass').animate({
    left: '+=200'
}, 500, positionReset());
Run Code Online (Sandbox Code Playgroud)