我在jQuery中使用多个队列时遇到问题。考虑以下示例:jQuery中的多个队列
$('#example').click(function() {
$(this).delay(1000, 'fx2').queue('fx2', function() {
alert('here');
});
});
警报从不会触发。为什么?
我在jQuery中使用多个队列时遇到问题。考虑以下示例:jQuery中的多个队列
$('#example').click(function() {
$(this).delay(1000, 'fx2').queue('fx2', function() {
alert('here');
});
});
警报从不会触发。为什么?
似乎在第一次使用.dequeue()
当
.dequeue()
被调用时,在接下来的功能,您还需要设置在运动中该队列自定义队列调用时delay
(或任何其他动画为此事)队列从队列中移除,然后执行。该函数应该依次(直接或间接)导致.dequeue()
被调用,以便序列可以继续。
$('#example').click(function() {
$(this).delay(1000, 'fx2').queue('fx2', function(next) {
alert('here');
// start the next anim in the queue...
next();
}).dequeue('fx2');
});
注意,在queue
回调接收一个函数作为第一个参数。这是您希望在完成“动画”时调用的函数,以便可以执行队列中的下一个项目。
jQuery的代码处理 '自动启动' 的fx
队列中$.fn.queue()
function:
if (type === "fx" && queue[0] !== "inprogress") {
jQuery.dequeue(this, type);
}
一个更简单的方法是'function(n){alert('here'); N(); }':) – 2010-05-21 21:05:10
+1 - 尽管代码似乎在回调中没有'$(this).dequeue('fx2');'也能正常工作。有必要吗?似乎链接的'dequeue()'必须被调用? – user113716 2010-05-21 21:05:15
+1对于自动启动笔记,但我仍然使用提供的下一个函数作为您正在排队的回调的参数,非常干净:) – 2010-05-21 21:09:04
请尝试以下jsFiddle示例。它似乎工作,并做你想做的。
除了使用'fx'队列而不是'fx2'队列作为OP想要的。 - 还是值得在SO链接中包含实际的代码,而不是将实际的答案推给jsFiddle/jsbin – gnarf 2010-05-21 20:57:29
亚历克斯,你完全错过了我的问题。我不想使用标准的FX队列(就像你的工作例子那样)。 – kingjeffrey 2010-05-21 21:43:52
是否'click'处理程序中执行呢? – SLaks 2010-05-21 20:42:54