我看到链中的.filter()
和.end()
来电让我相信这是可能的。所以我创建了自己的函数,可以添加到链rawr()
$('#object').fadeIn().rawr().delay(1000).fadeOut();
我希望rawr()看到接下来会发生什么,取决于它是什么,允许执行继续或结束链并移动到下一行代码。这是怎么做到的?
答案 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()来弹出集合 叠加。