7

html:

<span>hello world!</span>

js :(コールバックを使用)

$('span').click(function() {
  $(this).animate({
    fontSize: '+=10px'
  }, 'slow', function() {
    // callback after fontsize increased
    $(this).text(  $(this).text() + ' rolled! ' );
  });
});

クリックするたびSPANに、フォントサイズが大きくなった後、テキスト「rolled」が一緒に発生するのではなく、追加されます。

そして、それは次のようにqueue()を使用して行うことができます:

js :( queue()を使用)

$('span').click(function() {
  $(this).animate({
    fontSize: '+=10px'
  }, 'slow'})
  .queue(function() {
    $(this).text(  $(this).text() + ' rolled! ' );
  });
});

それらの違いはわかりません。どちらも同じことをします。

なぜqueue()はコールバックを使用するよりも優れている/好むのですか(またはなぜそうではないのですか)?queue()の何が特別なのですか?

ありがとう。

4

2 に答える 2

1

アニメーションが配置されるのと同じキューに、より多くのイベント(コードで他に指定する)を配置できます。

したがって、コールバックはアニメーションの準備ができた直後に実行されますが、queue()を使用する場合、最初に実行される他のイベントがキューにある可能性があります。

この動作の利点は、同時イベント(たとえば、上にスライドすることと下にスライドすること)が同時に実行されないことです。これにより、奇妙なことが起こります。

例:

$('div').click(function() {
  $(this).animate({
    color: 'green'
  }, 'slow'})
  .queue(function() {
    $(this).text( ' got colored! ' );
  });
});

$('span').click(function() {
  $(this).animate({
    fontSize: '+=10px'
  }, 'slow'})
  .queue(function() {
    $(this).text(  ' got bigger! ' );
  });
});

最初にdivをクリックし、その直後にスパンをクリックすると、divのキューが最初に実行され、準備ができたらスパンのキューが実行されることを確認できます。

コールバックの場合、最初に準備ができているアニメーションに属するものが最初に実行されます。そして、それらが同時に準備ができている場合、両方が同時に実行されます。その結果、この場合、「色が付いた!」も表示されません。テキストまたは「大きくなりました!」文章。

于 2012-06-01T09:10:01.680 に答える
0

パラメータの使用は、メソッドcallbackの使用とまったく同じです。 アニメーションにを指定すると、と同じ方法でコールバックがキューに入れられます。 .queue(callback)
callback.queue

.queue(callback)アニメーションとは別にコールバックを追加するもう1つの方法です。
そうする完全に正当な理由があります:

$(this).animate(...);
if (shouldDoCallback) {
    $(this).queue(...);
}
于 2012-06-20T20:12:41.110 に答える