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/

您不必担心构建和管理您自己的队列,当您在元素上调用 queue 时,队列由 jQuery 管理。

这是他们的示例的小提琴,效果很好:

http://jsfiddle.net/7GxwR/

因此,为了将动画输入队列,只需创建一个函数,将所有动画按顺序堆叠到元素上,然后调用.queue(...)元素强制它在队列中执行。

如果您想动态更改/构建队列,您需要停止所有动画,runIt使用循环在存储动画参数和时间的动态 JSON 对象数组上构建小提琴中的函数,然后showIt调用runItjQuery API 中的小提琴和示例。

这里的基本点是,不要构建你自己的队列/数组,如果你在一个已经应用了多种效果的元素上调用队列,jQuery 会为你做这件事。

希望这可以帮助。

于 2013-02-04T14:44:23.160 回答