当用户按下按钮移动到下一个图像时,我正在处理图像上的一些过渡。当有多个相邻的非常窄的图像时,这些图像将同时转换。所以我检查图像上的宽度并将薄的添加到数组中,然后在数组中的每个对象上运行过渡。我想在数组中每个图像的动画之间创建一点延迟,所以我试图在 1 秒超时后运行我的 jQuery.animate。
这是我试图让超时工作但没有成功的方法:
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 );
}
}
过渡输出():
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);
}