Как вы, возможно, знаете, если вы объединяете анимации jQuery вместе, используя параметр "complete", каждая анимация происходит последовательно только после завершения предыдущей.
У меня есть такая цепочка:
$('#foobar').load(url, function(){
$(this).fadeIn(time, function(){
$(this).scrollTop(position, time, function() {
$(this).css({'color':'#58e'})
});
});
});
Эта цепочка будет выполнять что-то вроде этого: сначала загрузить контент, затем постепенно добавить его, затем прокрутить до самого верха, а затем, наконец, изменить цвет CSS.
То, что я хочу, это: сначала загрузить контент, затем добавить и прокрутить до верха одновременно, а затем, наконец, изменить цвет после того, как fadeIn
и scrollTop
оба сделаны.
Допустим, анимация scrollTop
занимает в два раза больше времени, чем анимация fadeIn
. Какой простой фрагмент кода я бы добавил к своему коду, чтобы обратный вызов scrollTop
в fadeIn
НЕ Дождался завершения анимации fadeIn
. Анимация css()
будет ожидать завершения анимации scrollTop
, как обычно.
Таким образом, единственное изменение (каким бы оно ни было) повлияет на обратный вызов в fadeIn
, где вызывается scrollTop
. Я предполагаю, что это может быть связано с манипулированием очередью?
Спасибо за помощь!
РЕДАКТИРОВАТЬ: Вот решение, подсказанное Эндрю:
Во-первых, мой оригинальный код, который загружает каждую пользовательскую функцию по порядку:
show_loader(0, function() {
close_box($target_close, '/', '#' + $target_close.attr('id') + ' .post_wrap', function() {
open_box($target_open, event.value, '.wide-col', function() {
hide_loader(function() {
scroll_to_content($target_open);
});
$target_close = $target_open;
});
});
});
Теперь я хочу, чтобы close_box и open_box выполнялись асинхронно (одновременно), поэтому я изменил это на следующее:
show_loader(0, function() {
close_box($target_close, '/', '#' + $target_close.attr('id') + ' .post_wrap');
open_box($target_open, event.value, '.wide-col', function() {
hide_loader(function() {
scroll_to_content($target_open);
});
$target_close = $target_open;
});
});
Теперь анимации close_box и open_box происходят в одно и то же время.