Я полагаю, проблема в том, что вы запускаете анимацию.
Ваше асинхронное действие вызывает некоторые скользящие анимации.
Во-первых:
Попробуйте записать окончания всех анимаций (поместите функцию обратного вызова в вызов slide*
и зарегистрируйте некоторый текст на консоли.), Чтобы увидеть, работают ли они в правильном порядке - я полагаю, что они не работают, и в этом проблема.
Во-вторых:
Попробуйте добавить .stop()
перед каждой асинхронно запускаемой анимацией, чтобы она сломала другие анимации, работающие одновременно.
Третье:
Если вышеописанное не помогло, попробуйте это для каждой анимации:
if($(this).data('running')==0){
$(this).data('running',1).slideUp(function(){$(this).data('running',0)});
}else{ /*call with timeout or ignore...*/ }
Это базовый семафор элемента.
OR
Вы можете правильно использовать .animate и анимационные очереди в jQuery, но в этом случае это будет немного излишним (я думаю).