1

一連の関数を順番に実行するために、jqueryキューを活用しようとしています。これらの「キューに入れられた」関数は、実際にはページ上のオブジェクトをアニメーション化します。

これは私のキューを構築するための私の元のコードでした:

this.queue = function(fx, params) {
    this.animation_queue.push({fx: fx, params: params});
};

次に、すべての関数がキューに入れられると、次のように消費します。

this.animate = function() {     
    for(var i=0; i<this.animation_queue.length; i++) {  
        this.animation_queue[i].fx.apply(this, [this.animation_queue[i].params]);
}};

明らかに、私が遭遇した問題は、キュー要素が正しく実行されていなかったことです。それらは順番に実行されましたが、各関数がアニメーションを実行したため、実際には、前の要素のアニメーションが終了した後に各キュー要素を実行する必要があります。

私は次のようにjqueryキューを使用することを検討しました:

this.queue = function(fx, params) {
    this.animation_queue.delay(500, 'animations');

    this.animation_queue.queue('animations', function(next) {
         next();

    });
};

しかし、パラメーターを使用して、以前と同じように関数を呼び出す方法がわかりません。

これを達成する方法について何か提案はありますか?

4

1 に答える 1

0

ドキュメントによると:

http://api.jquery.com/queue/

独自のキューの作成と管理について心配する必要はありません。要素でキューを呼び出すとすぐに、キューはjQueryによって管理されます。

これがうまく機能する彼らの例のフィドルです:

http://jsfiddle.net/7GxwR/

したがって、アニメーションをキューにフィードするには、すべてのアニメーションを要素に順番にスタックする単一の関数を作成してから、要素を呼び出し.queue(...)てキューで強制的に実行します。

キューを動的に変更/構築する場合は、すべてのアニメーションを停止する必要があります。アニメーションのパラメーターとタイミングを格納する動的JSONオブジェクトの配列をループして、フィドルで関数を構築してから、runItを呼び出します。 jQueryAPIのフィドルと例。showItrunIt

ここでの基本的なポイントは、独自のキュー/配列を作成しないでください。複数の効果がすでに適用されている要素でキューを呼び出す場合、jQueryがこれを行います。

お役に立てれば。

于 2013-02-04T14:44:23.160 に答える