jQuery/Javascript-是否可以获得链中的下一个调用

jQuery / Javascript - Is it possible to get the next call in the chain

本文关键字:下一个 调用 Javascript- 是否 jQuery      更新时间:2023-09-26

我看到了链中的.filter().end()调用,这让我相信这是可能的。所以我制作了自己的函数,可以添加到rawr() 链中

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

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

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

根据您的意见:

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

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

在您的自定义函数中,您可以访问fx队列并检查排队的内容。您还可以调用clearQueue来删除任何排队的函数,然后再将fx队列出列。

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

话虽如此,听起来你应该打破你的链,有条件地执行方法,而不是试图链接稍后简单清除的动画。

有条件地终止链是可能的,请查看此处。

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

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

这不是.filter.end的工作方式。来自文件的权利:

当这种情况发生时,就好像新的一组元素被推到了维护在对象内部的堆栈。每次连续filter方法将一个新元素集推送到堆栈上。如果我们需要对于较旧的元素集,我们可以使用end()将集合从堆栈