3

.animateアニメーションの前に、この関数のコールバックが発生するのはなぜですか?

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

これは Javascript の部分です。

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

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

これは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>​

</p>

4

4 に答える 4

6

animate()これは、関数を に渡していないためです。それを呼び出して、それが返す値を渡しています(これは関数ではなく、その後フレームワークによって無視されます)。

関数の後の括弧を削除する必要があります。

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

それ以外の:

$('.spanClass').animate({
    left: '+=200'
}, 500, positionReset());
于 2012-10-22T14:25:49.077 に答える
4

次のようにする必要があります。

$('#clickButton').click(function() {
  $('.spanClass').animate({
    left: '+=200'
  }, 500, positionReset); //not positionReset() or you will autocall callback function
});
于 2012-10-22T14:25:56.953 に答える
1

positionReset()関数呼び出しとして関数を呼び出します。関数オブジェクトを animate コールバックに次のように渡す必要があります。positionReset

デモを見る

$('#clickButton').click(function() {
  $('.spanClass').animate({
    left: '+=200'
  }, 500, positionReset);
});
于 2012-10-22T14:30:56.540 に答える
1

後に括弧を付けて関数を呼び出しているためです。関数への参照を渡すには、かっこなしでその名前を使用します。例えば

$('#clickButton').click(function() {
  $('.spanClass').animate({
    left: '+=200'
  }, 500, positionReset);
});
于 2012-10-22T14:28:22.090 に答える