5

我已经阅读了关于 jQuery 队列的许多答案和博客文章......特别是这个特定的答案有很大帮助 - https://stackoverflow.com/a/3314877/1315811。但是,jquery.com 上的标准文档和上面的答案都让我查看了 jquery 代码http://code.jquery.com/jquery-1.7.2.js

我无法理解 - 从代码中 - 'fx'(默认)队列如何自动启动。尤其是在队列被清空之后。

例如在自定义队列上,当您手动启动队列时,队列用完了要调用的函数,对队列的任何引用都不再无效,所以我希望在 jquery 代码中的某个地方尝试找出状态队列,如果它是空的自动启动它?该代码有点演示了我遇到的情况,如果我只是缺少一段代码(我在上面提到的代码中查看行:2060-2160),请告诉我。

> var aq = $({});
> aq.queue("mp").length
0
> n1 = aq.queue("mp")
[]
> n1.length
0
> aq.queue("mp", function (next) { setTimeout(next, 5000); })
[Object]
> aq.queue("mp", function (next) { setTimeout(next, 5000); })
[Object]
> aq.queue("mp", function (next) { setTimeout(next, 5000); })
[Object]
> n1.length
0
> aq.queue("mp").length
3
> n1 = aq.queue("mp"); // reset n1 to the "new" queue...
> n1.length
3

另外,如果其中任何部分不清楚,请告诉我,我会相应地更新。

4

1 回答 1

1

代码中的这段queue代码处理自动启动:

if ( type === "fx" && queue[0] !== "inprogress" ) {
    jQuery.dequeue( this, type );
}

如果正在排队fx的队列是并且队列尚未在进行中,dequeue则调用。

于 2012-05-06T03:17:57.893 回答