Вы можете использовать это:
l = ['a', 'b', 'c']
d = dict((k, [0, 0]) for k in l)
Я предполагаю, что часть волнения связана с тем, что вы исчезаете элементы, чьи предки в настоящее время исчезают.
Когда вы что-то исчезаете, оно автоматически затемняет и его потомков, так что вам, вероятно, следует сделать это вместо этого.
$('#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();
});
});