Я предполагаю, что часть изменчивости связана с тем фактом, что вы замираете элементы, чьи предки в настоящее время исчезают.
Когда вы что-то исчезаете, оно автоматически исчезает и у его потомков, поэтому вам следуетвероятно, сделайте это вместо этого.
$('#content').children().fadeOut(500, function(){
$('#kiosk').fadeIn(250);
});
Теперь имейте в виду, что обратный вызов с .fadeIn()
будет вызываться один раз для каждого элемента , который исчезает.Это также может быть проблемой.
Поскольку (предположительно) #kiosk
является прямым потомком #content
, вы можете просто напрямую связать fadeIn()
в конце.Нет .delay()
необходимо.
Попробуйте: http://jsfiddle.net/rrM28/
$('#content').children().fadeOut(500).filter('#kiosk').fadeIn(250);
РЕДАКТИРОВАТЬ: Из вашего обновленного примерав комментарии fadeIn()
запускается немедленно, потому что #kiosk
изначально скрыт, поэтому анимация сразу завершается, и цепочка продолжается.
Решение состоит в том, чтобы разместить .fadeIn()
в анимации .queue()
, так что он будет работать только после завершения fadeOut()
.
Попробуйте: http://jsfiddle.net/rrM28/4
$('#viewer a').click(function(e) {
e.preventDefault();
// Don't fadeOut the #kiosk
$('#content').children(':not(#kiosk)').fadeOut(500)
// Place the fadeIn of #kiosk in the next step of the animation queue
.queue(function() {
$(this).siblings('#kiosk').fadeIn(250).dequeue();
});
});