У меня возникли серьезные проблемы, связанные с работой очереди JQuery. Все определенные функции выполняют одновременно, поэтому изменение класса происходит до того, как animation- мы хотим, чтобы исчезать, а затем изменить класс, а затем исчезает снова.Проблемы с очередью JQuery
function animatePlusMinus(){
if ($(this).hasClass("ui-icon-minus")) {
$(this).queue("goPlus",function(next) {
$(this).fadeOut(500);
next();
})
.queue("goPlus", function (next) {
$(this).removeClass("ui-icon-minus").addClass("ui-icon-plus").fadeIn(500);
})
.dequeue("goPlus");
} else if ($(this).hasClass("ui-icon-plus")) {
$(this)
.queue("goMinus", function (next) {
$(this).fadeOut(500);
next();
})
.queue("goMinus", function (next) {
$(this).removeClass("ui-icon-plus").addClass("ui-icon-minus").fadeIn(500);
})
.dequeue("goMinus");
}
}
я мог бы сделать этот простой пример с функцией обратного вызова на fadeOut
, однако я хотел бы расширить эту логику таким образом, чтобы она нуждалась в надлежащей очереди. Мне также нужно научиться использовать .queue()
!
UPDATE: Here is an JSFiddle
Без 'dequeue' очередь не начинается вообще. Без 'next' он не переходит к следующей функции. – Jess
@Jess Да, я неправильно понял вашу цель. См. Отредактированный ответ. –
Спасибо! Я знал, что это будет что-то глупое. Интерфейс обещаний выглядит многообещающим * на будущее, но похоже, что поддержка еще не достаточно широка в браузерах. * (heh) – Jess