好的,所以我显然在这里遗漏了一些东西。我知道这又回到了同步/异步的事情上,但我想不通。
我正在尝试构建一个图像轮播,在悬停时将一排图像向左滑动,并在悬停结束时停止滑动。
滑块的一般逻辑如下所示:
默认状态:有一堆图像彼此相邻浮动,延伸到视口边缘:(哈希符号是视口)
# [ 图像 1 ] [ 图像 2 ] # [ 图像 3 ]
我使用 animate 给 IMAGE-1 一个负边距,将其拉出视口。
[ 图像 1 ] # [ 图像 2 ] [ 图像 3 ] #
然后我会将 IMAGE-1 移动到序列的末尾,将其边距设置回 0,然后再做一次。
# [ 图像 2 ] [ 图像 3 ] # [ 图像 1 ]
所以我的问题是,IMAGE-1 在动画结束之前被移到序列的末尾。我假设正在发生的事情是“动画”功能和移动 image-1 的位同时触发。我想按顺序发出这些命令,这样当一个完成时,另一个开始。
这是我的功能:
function slideLoop(div) {
var width = div.find("img:first").width();
var i = setInterval(function(){
var images = div.find("img");
var first = images.first();
images.last().css("marginLeft", 0);
first.animate({marginLeft: 0 - width + "px"}, 4000, "linear");
images.last().after(images.first());
}, 4000);
}
提前致谢。