検索から見つけたいくつかの関連する質問:
jquery の animate() に関するドキュメントを読みましたが、問題の解決策を見つけるのに苦労しています。
私がやろうとしているのは、複数の要素で一連のアニメーションをキューに入れることです。つまり、要素の現在のアニメーションで、それ自体の要素のアニメーションをブロックし、他の要素のアニメーションをブロックしないようにします。
最後に、要素の 1 つのアニメーションをキャンセルできるようにしたいのですが、他の要素のアニメーションは続行できるようにします。
名前付きのjqueryキューが必要だと思いますが、それを試みるとアニメーションが開始されませんでした(これは、「fx」キューが他のすべてのキューに存在しないという魔法によるものだと思います)。
前もって感謝します!
編集:
ここに私が探しているものがあります:
function someAnimationWrapper(queueName, element, animation) {
///<summary>
/// Places the animation specified into the queue of animations to be
/// run on that element. The animation queue is a named queue so
/// animations in the queue can be stopped at any time.
///</summary>
///<param name="queueName" type="String">
/// The name to assign to the element's animation queue.
///</param>
///<param name="element" type="jQuery">
/// jQuery object to perform the animations on.
///</param>
///<param name="animation" type="Object">
/// Animation properties for the animation call.
///</param>
// TODO: If magic needs to be done here this is a placeholder
element.animate(animation);
}
function magicallyStopMyQueue(queueName, clearQueue, jumpToEnd) { // May take element, whatever I need to get the job done
///<summary>Mirrors jQuery.prototype.stop(), but with the named queue.</summary>
///<param name="queueName" type="String">
/// Animation queue to stop.
///</param>
///<param name="clearQueue" type="Boolean">
/// See jQuery.prototype.stop()
///</param>
///<param name="jumpToEnd" type="Boolean">
/// See jQuery.prototype.stop()
///</param>
// TODO: some magics here
}
var e1 = $('.myDiv1'),
e2 = $('.myDiv2');
someAnimationWrapper('firstQueue', e1, { properties: { left: '-=16' }, duration: 100 });
someAnimationWrapper('firstQueue', e1, { properties: { left: '-=16' }, duration: 100 });
someAnimationWrapper('firstQueue', e1, { properties: { left: '-=16' }, duration: 100 });
someAnimationWrapper('secondQueue', e2, { properties: { left: '-=16' }, duration: 100 });
someAnimationWrapper('secondQueue', e2, { properties: { left: '-=16' }, duration: 100 });
someAnimationWrapper('secondQueue', e2, { properties: { left: '-=16' }, duration: 100 });
// Now I want to stop the first one
magicallyStopMyQueue('firstQueue', true, true);