РЕДАКТИРОВАТЬ: Начиная с jQuery 1.7, animate
действительно имеет возможность указать пользовательскую очередь для добавления анимации.
Не совсем понятно, в чем проблемаздесь, но я думаю, что, глядя на пример, вы ожидаете, что анимации в очереди будут находиться в другой очереди.
Вот проблема.Animate всегда идет в очередь FX.Я не знаю ни одного способа поставить его в другую очередь.Таким образом, причина, по которой вы всегда видите 0 в своей пользовательской очереди, заключается в том, что вещи, которые вы ставите в очередь, сразу же заканчиваются.Они просто вызывают animate (помещая анимацию в очередь FX) и заканчивают работу.Это также, почему вы видите 4 изначально в очереди FX.
Одним из способов решения этой проблемы является запуск анимации в пользовательской очереди с помощью queue:false
, но затем вы сами обрабатываете задержки в этой очереди.Например:
http://jsfiddle.net/jRawX/6/
$(function(){
// animation for the 'FX' queue:
$('.tester').fadeOut(1000).fadeIn(1000)
// animation for the 'lolo' queue:
$('.tester')
.queue('lolo',function(next){
$(this).animate({left: 100}, {duration:1000, queue:false, complete: next})
})
.queue('lolo',function(next){
$(this).animate({left: 600}, {duration:1000, queue:false, complete: next})
})
.dequeue('lolo')
})
// counters
setInterval(function(){
var count = $('.tester').queue('fx').length
$('.counter #c1').html(count)
var count = $('.tester').queue('lolo').length
$('.counter #c2').html(count)
}, 250)
Возможно, есть лучший способ сделать это, я только что придумал этот.Но мне не удалось найти какой-либо способ анимировать в другой очереди.
РЕДАКТИРОВАТЬ: немного улучшена, следующий вызов по обратному вызову анимации.