Завершите одну анимацию, затем запустите другую - PullRequest
15 голосов
/ 20 января 2009

У меня есть два элемента div и две отдельные ссылки, которые запускают slideDown и slideUp для элементов div.

Когда один из блоков скользит вниз, и я щелкаю по другому, я скрываю первый элемент div (slideUp), а затем открываю другой элемент div (slideDown), но в данный момент это похоже на скольжение одного блока, другие, в то же время, скользят вверх.

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

Ответы [ 8 ]

20 голосов
/ 20 января 2009
$('#Div1').slideDown('fast', function(){
    $('#Div2').slideUp('fast');
});

Редактировать: Вы проверили плагин для аккордеона (если вы пытаетесь это сделать)?

5 голосов
/ 25 июня 2011

Пример немного чище и с задержкой между анимациями:

$("#elem").fadeIn(1000).delay(2000).fadeOut(1000);
5 голосов
/ 20 января 2009

Тебе нужно это приковать

function animationStep1()
{
   $('#yourDiv1').slideUp('normal', animationStep2);
}

function animationStep2()
{
   $('#yourDiv2').slideDown('normal', animationStep3);
}

// etc

Конечно, вы можете оживить это с помощью рекурсивных функций, массивов, содержащих очереди анимации и т. Д., В соответствии с вашими потребностями.

1 голос
/ 20 января 2009

Вы можете использовать обратный вызов для запуска следующего эффекта, когда первый будет сделан:

$("#element1").slideUp(
    "slow", 
    function(){
        $("#element2").slideDown("slow");
    }
);

В этом примере функция, определенная как второй аргумент метода slideUp, вызывается после завершения анимации slideUp.

См. Документацию: http://docs.jquery.com/Effects/slideUp

0 голосов
/ 20 января 2009

пример этого можно увидеть в JQuery для начинающих - День 2

Существует 15 дней этих уроков, и они являются хорошим ресурсом. Наслаждайтесь!

0 голосов
/ 20 января 2009

Используйте второй параметр функции: обратный вызов. Например,

$(this).slideDown( speed, function(){
    $(this).slideUp();
});
0 голосов
/ 20 января 2009
$("#thisDiv").slideUp("slow", function() {
    // This function is called when the slideUp is done animating
    $(this).doNextThing();
});
0 голосов
/ 20 января 2009

Большинство функций jquery имеют параметр обратного вызова, в него можно просто передать функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...