Поочередное применение эффектов
Всем здравствуйте!
Имеется три блока, как осуществить поочередную анимацию, т.е. сначала появляется первый блок, как только его анимация закончилась, второй, третий и т.д. ? Предполагаю, что должен быть какой-то цикл, но он работает не так, как мне бы хотелось, т.е. выводит все три блока одновременно. Буду благодарна любому совету, может подскажите где и что почитать :thanks: <script> $(document).ready(function(){ $("div").each(function(){ $(this).effect("slide",{ mode: "show", direction: "right" }, 500) }) }) </script> <div id="div1">Текст 1</div> <div id="div2">Текст 2</div> <div id="div3">Текст 3</div> |
Используете jQueryUI?
jQueryUI Effect Обратите внимание на четвёртый параметр (complete) - это функция, которая выполняется после завершения анимации. |
Да.
Да, я пыталась колдовать с вызовом обратной функции, но что-то должного результата опять же, не принесло. Целый день сижу с этой проблемой, много чего было перепробовано и setTimeOut(), .queue() и пр., но что-то мозг подводит, сообразить не могу. :-? |
Не тестировал, поэтому может не работать, но что-то типа такого:
function sequentialEffects(elems, index) { index = index || 0; if (!elems[index]) return; elems.eq(index).effect( 'slide' , { mode: 'show' , direction: 'right' } , 500 , function () { sequentialEffects(elems, index + 1); } ); } sequentialEffects($('div')); |
Цитата:
$("p").animate({ height:200, width:400, opacity: .5 }, 1000, "linear", *!* function(){alert("Вместо alert, вызов следующего эффекта"); */!* } ); |
Sanda,
Спасибо большое, работает все прекрасно. :thanks: Deff, Вам также спасибо, что ответили :thanks: |
|
Часовой пояс GMT +3, время: 02:17. |