Задержка jQuery между анимациями

У меня есть два элемента, которые не должны быть активны одновременно, поэтому, когда один из них переключается, я затухаю другой, однако я хотел бы иметь возможность затухать открытый элемент, а затем вводить другой. Есть ли способ сделать это, который не взломать?

<script ="text/javascript">

$(function() {
    $('#jlogin').click(function() {
        $('#login').toggle('fast');
        $('#reg').fadeOut('fast');
    });

    $('#jreg').click(function() {
        $('#reg').toggle('fast');
        $('#login').fadeOut('fast');
    });
});

</script>

Это мой текущий сценарий.


person Oliver Stubley    schedule 04.06.2009    source источник


Ответы (1)


Посмотрите на использование механизма обратного вызова для fadeOut, чтобы вы могли создавать цепочки анимаций. Обратный вызов методов анимации вызывается после завершения предыдущей анимации.

 <script type="text/javascript">
    $(function() {
        $('#jlogin').click(function() {
           $('#reg').fadeOut('fast', function() {
               $('#login').toggle('fast');
           });
        });
        $('#jreg').click(function() {
            $('#login').fadeOut( 'fast', function() {
                $('#reg').toggle('fast');
            });
        });
     });
</script>
person tvanfosson    schedule 04.06.2009
comment
Я обновил свой пример. Я думаю, что изначально неправильно понял, что вы пытались сделать, но этот пример должен постепенно исчезать из элемента, который должен быть удален, а затем переключать элемент, который (предположительно) будет показан. Стоит ли использовать show вместо toggle? - person tvanfosson; 04.06.2009
comment
Первоначально я использовал переключатель, потому что мне нравится анимация, будет ли шоу более полезным? Мне нужно иметь возможность повторно открывать элементы, если это необходимо. - person Oliver Stubley; 04.06.2009
comment
Кроме того, попробовал пример и отлично работал после небольшой настройки, я думаю, что у вас где-то была скрытая ошибка. - person Oliver Stubley; 04.06.2009
comment
Да. Я вижу, где мне не хватает закрывающей скобки и точки с запятой. Я исправил это (хотя я еще не проверял это). - person tvanfosson; 04.06.2009
comment
Если элемент всегда отображается при щелчке, вы можете использовать версию переключателя, которая принимает параметр, указывающий, следует ли отображать его, например. toggle(true), чтобы гарантировать правильное отображение. - person tvanfosson; 04.06.2009