Порядок выполнения анимации
Извиняюсь заранее, вопрос вероятно из области RTFM....Но что то я в ступор впал и ничего найти/понять не могу:
Итак есть n-разных элементов (допустим div'ы) Я никак не могу решить 2 задачи: 1. как сделать чтобы анимация элемента n+1 начиналась только после окончания анимации элемента n? Можно конечно и так:
$('div.n').animate({"top": "+=350"},2500);
$('div.n+1').pause(2500).animate({"bottom": "+=110"},1500);
Но как то коряво на мой ламерский взгляд..... 2. При обработке событий, ну допустим:
$('div.n').hover(
function() {
$(this).find('div:first').slideDown('slow');
},
function() {
$(this).find('div:first').slideUp('fast');
});
можно насоздавать событий пока идет анимация (мышка, она ведь быстрая) и потом дочерний элемент пляшет сам по себе, пока не отработает все события. Как запретить на время анимации постановку в очередь? |
$('div.n').animate({"top": "+=350"},2500).animate({"bottom": "+=110"},1500);
Цитата:
|
Цитата:
Я тормоз! ответ в теме на первой странице http://javascript.ru/forum/jquery/41...ya-komand.html По идее должно быть так:
$('div.n').fadeIn(1500).fadeOut(1500,function() {
$('div.n+1').fadeIn(1500);
});
ну или то же самое с animate Цитата:
Как и думал я не первый стакиваюсь с этим траблом На этом форуме нашел код:
var hideDelayTimer = null;
var flag = 0;
$("#blablabla").bind("mouseenter",function() {
if (hideDelayTimer) clearTimeout(hideDelayTimer);
if (flag == 0) {
flag = 1;
$(this).animate({"width": "+=120px"}, "slow");
} else {
return;
};
}).bind("mouseleave",function(){
if (hideDelayTimer) clearTimeout(hideDelayTimer);
hideDelayTimer = setTimeout(function() {
hideDelayTimer = null;
if (flag == 1) {
$("#blablabla").animate({"width": "-=120px"}, "slow", function() {
flag = 0;
});
} else {
return;
};
}, 500);
});
Как я понял, перед выполнением анимации задается переменная flag, а после ее окончания она обнуляется. Перед началом анимации проверяется состояние переменной и в сучае выпонения иной анимации новая не выполняется. Не понял назначение переменной hideDelayTimer и проводимых с ней операций. Подскажите? |
Спасибо всем откликнувшимся разобрался сам.
Опишу для будущих поколений, если ошибся надеюсь меня поправят: При скрытии функция setTimeout(function() задает паузу перед выполнением анимации в 500мс. и если в этот период снова происходит вызов по событию, то анимация отменяется строчкой: if (hideDelayTimer) clearTimeout(hideDelayTimer); |
| Часовой пояс GMT +3, время: 06:45. |