0

ユーザーが中断しない場合、最後まで完了する必要がある一連のアニメーションがあります。アニメーションは遅延を使用して実装されます。例えば

$element1.delay(1000).animate({left: 1000}, 5000);
$element2.delay(2000).animate({left: 1000}, 5000);
$element3.delay(3000).animate({left: 1000}, 5000);
$element4.delay(4000).animate({left: 1000}, 5000);

私がこのようにしている理由は、各アニメーションが他のアニメーションのタイミングから完全に独立しているため、これが直感的に思えるからです。

アニメーションを 2500ms マークで中断したいとします。中断すると、要素はアニメーション状態の最後にジャンプする必要があります。ここで、.find(:animated) 選択で .stop(false, true) 関数を使用してみました。$element1 と $element2 は確かに中断され、終了状態にジャンプしますが、$element3 と $element4 はまだ .delay フェーズにあるため、影響を受けません。

私が望む効果を達成するための最良かつ最も簡単な方法は何ですか? ありがとう

4

1 に答える 1

0

finish()最近導入された方法を探していると思います。の jumpToEnd 引数を true に設定stop()すると、キュー内で現在処理されているアイテムにのみ影響します。しかし、 を呼び出すとfinish()、キュー全体の最終結果にジャンプします。

フィドル: http://jsfiddle.net/SnTgS/

Finish()は jQuery 1.9 で導入されましたが、後に 1.10.1 でいくつかのバグが修正されたため、そのバージョン以降を使用することをお勧めします。

http://api.jquery.com/finish/

jQueryの以前のバージョンでは、キューの長さをループして、キュー内のstop(false, true)各アイテムを呼び出すことができたと思います。

于 2013-08-03T09:49:22.850 に答える