Я работаю над некоторыми переходами на изображении, когда пользователь нажимает кнопку, чтобы перейти к следующему изображению. Когда несколько изображений расположены очень близко друг к другу, все эти изображения переходят одновременно. Поэтому я проверяю ширину изображений и добавляю тонкие к массиву, а затем запускаю переход для каждого объекта в массиве. Я хотел создать небольшую задержку между анимацией каждого изображения в массиве, поэтому я пытаюсь запустить свой jQuery.animate по истечении 1 секунды.
Вот как я пытался заставить тайм-аут работать без успеха:
1
for (i=0; i < set.length; i++) {
if (i != 0) {
setTimeout(function() { set[i].transitionOut($('#gallery'), 562) }, 100);
} else {
set[i].transitionOut( $('#gallery'), 562 );
}
}
2.
for (i=0; i < set.length; i++) {
if (i != 0) {
function tempTransition() {
set[i].transitionOut( $('#gallery'), 562 );
}
setTimeout(tempTransition, 100);
} else {
set[i].transitionOut( $('#gallery'), 562 );
}
}
3.
for (i=0; i < set.length; i++) {
if (i != 0) {
setTimeout('function() { set[i].transitionOut($("#gallery"), 562) }', 100);
} else {
set[i].transitionOut( $('#gallery'), 562 );
}
}
transitionOut ():
jQuery.fn.transitionOut = function(parent, height) {
this.animate({
height: '0',
top: height + 'px'
}, function() {
$(this).remove();
});
}
Я получил его на примере закрытия CMS. Но теперь я сталкиваюсь с новой проблемой. Переход происходит только со вторым изображением. Когда есть три изображения, оно переходит в анимационное изображение 1, задержка, анимационное изображение 2, анимационное изображение 3. Между 2 и 3 задержка отсутствует.
Вот новый код:
for (i=0; i < set.length; i++) {
(function(i) {
if (i != 0) {
function tempTransition() {
set[i].transitionOut( $('#gallery'), 562 );
}
setTimeout(tempTransition, 200);
} else {
set[i].transitionOut( $('#gallery'), 562 );
}
})(i);
}