javascript - jQuery 队列,它是如何工作的?

标签 javascript jquery queue jquery-animate

我很难弄清楚队列在 jQuery 中是如何工作的,尤其是 fx 队列。我想做的是:

一个接一个地为多个不同的元素设置动画

看看this fiddle第一的。当您单击该按钮时,两个元素都会被动画化。现在我知道我可以做类似 this fiddle 的事情了,我将动画放在第一个动画的回调中,但这不是一个选项,因为我有一个动画池的情况,我想按特定顺序任意运行它们中的任何一个。例如,我可能有动画 A、B、C、D 和 E,它们都为不同的元素设置动画。有时我会希望按照 B->A->C 的顺序执行,有时我可能希望 A->B->C。

如何使用队列来实现此功能?

最佳答案

由于您的动画正在移动不同的元素,您最好管理自己的队列而不是使用 jquery 的队列。您可以将要运行的动画存储在一个数组中。

animations = [animation_a, animation_b, animation_c];

然后在每个动画结束时调用运行下一个动画的函数。喜欢:

function run_next() {
    if ( animations.length > 0 ) {
        next_animation = animations.shift();
        next_animation();
    }
}

function animation_a() {
    $("#element1").slideDown(500, run_next);
} 

function animation_b() {
    $("#element2").animate({left:'-=200'},1500, run_next);
} 

参见 this fiddle .

关于javascript - jQuery 队列,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6936810/

相关文章:

javascript - 使用 jquery 更新类

javascript - 使用正则表达式验证 keyup 事件的用户输入

c++ - 删除列表中的旧值并添加新值

java - 为什么我无法在此 VectorQueue 实例上实现我的 Vector 方法?

javascript - fiddler 未正确显示原始数据

javascript - Foreach 未获取所有数据

javascript - 获取同一 div 中同级的值

javascript - 2个重叠div上的mousemove事件

javascript - HTML/Javascript : Selecting uncles/aunts

java - JMS QueueSender 线程安全吗?