jQuery / Javascript - 是否有可能在链中获得下一个调用

时间:2012-08-22 18:44:33

标签: javascript jquery

我看到链中的.filter().end()来电让我相信这是可能的。所以我创建了自己的函数,可以添加到链rawr()

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

我希望rawr()看到接下来会发生什么,取决于它是什么,允许执行继续或结束链并移动到下一行代码。这是怎么做到的?

3 个答案:

答案 0 :(得分:1)

如果不解析JavaScript源本身,就无法直接在被调用函数链中获取下一个jQuery函数。

鉴于你的意见:

  

我在考虑不要只处理动画。

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

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

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

总而言之,听起来你应该打破链并有条件地执行方法,而不是试图链接以后简单清除的动画。

答案 1 :(得分:0)

有条件地结束链条,看here

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

然而,展望链中的当前项目是不可能的。

答案 2 :(得分:0)

这不是.filter.end的工作方式。从the documentation开始:

  

当发生这种情况时,就好像推入了新的元素集一样   在对象内维护的堆栈。每个连续   过滤方法将新元素集推送到堆栈。如果我们需要   一个较旧的元素集,我们可以使用end()来弹出集合   叠加。