我在jQuery中使用多个队列时遇到问题。请考虑以下示例:
$('#example').click(function() {
$(this).delay(1000, 'fx2').queue('fx2', function() {
alert('here');
});
});
警报永远不会触发。为什么呢?
答案 0 :(得分:7)
在自定义队列上调用delay
(或任何其他动画)时,您需要先使用.dequeue()
调用
.dequeue()
时,队列中的下一个函数将从队列中删除,然后执行。该函数应该(直接或间接)导致.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代码处理$.fn.queue()
function中的fx
队列'自动启动':
if ( type === "fx" && queue[0] !== "inprogress" ) {
jQuery.dequeue( this, type );
}
答案 1 :(得分:-1)
尝试以下jsFiddle示例。它似乎工作并做你想做的事。