2012-08-22 26 views
0

我看到.filter().end()调用链中,这导致我相信这是可能的。所以,我做了我自己的功能,可以添加到链rawr()jQuery/Javascript - 是否有可能在链中获得下一个电话

$('#object').fadeIn().rawr().delay(1000).fadeOut(); 

我想RAWR(),看看接下来要做什么了,并取决于它是什么,允许继续执行或结束链并移到下一行代码。这是如何完成的?

+0

如果我明白你的问题,你需要操纵队列:http://api.jquery.com/queue/ –

+0

@dystroy - 我想没有这个只与动画交易。所以如果我连接任何函数调用,我怎么能看到下一个? – Aust

+0

不可能在javascript – Austin

回答

1

您不能直接在调用函数的链中获取下一个jQuery函数,而无需解析JavaScript源本身。

鉴于您的评论:

我想没有与动画这只是交易。

您会想要使用queue方法在fx队列中存储函数。执行自定义函数时,fx队列将排队jQuery链中的所有动画。

在您的自定义功能中,您将能够访问fx队列并检查排队的内容。您还可以在出队fx队列之前调用clearQueue删除任何排队函数。

由于fx队列不会继续执行任何其他排队函数,所以有必要将自定义排队函数出队,直到当前正在执行的函数指示它已完成为止。

所有人都说,这听起来像你应该打破你的链条件并执行方法,而不是尝试链接后来简单清除的动画。

+0

一个非常好的解释 – Austin

+0

所以假设,如果我有一个链必须处理动画,我使用fx队列。但是如果我有一个不涉及动画的链条,我只是创建自己的队列? – Aust

+0

@即将工作。我发现我很少需要任何东西的自定义队列,尽管我所处理的大部分异步内容涉及动画的发生。 – zzzzBov

0

有条件地结束链条是可能的,看看here

$.fn.if = function(flag) { 
    return (flag) ? this.pushStack(this) : this.pushStack([]); 
}; 

然而,看在目前的链条项目是不可能的。

0

这不是如何.filter.end工作。右从the documentation

当这种情况发生,这是因为如果新组元件被压入 被保持在对象内部的叠层。每个连续的过滤方法将一个新的元素集推入堆栈。如果我们需要 旧的元素集,我们可以使用end()从 堆栈弹出集。

相关问题