$.show()
仅仅启动动画,然后将动画运行时移动到其他的事情。在你的情况下,循环快速启动所有动画,并且它们都一起运行。有几个选项来解决这个问题:
使用setTimeout()
延迟每个动画的开始,像这样:
var animationTime = 300;
for (i=0;i<xmlcatalog.length;i++){
setTimeout(function() { $(catalogitem+i).show("fold", {size:3}, animationTime); }, animationTime*i;
}
第一次通过,延迟将是0毫秒,第二个将是300毫秒,第三个将是600ms等等。
如果你不想操心计算时代,每个动画应该开始,你可以使用可选的callback
参数$.show()
,这触发一次在动画完成:
function showThumb(i) { // recursively calls each item after the current one is done
if (i>=xmlcatalog.length)
return;
else
$(catalogitem+i).show(300, function() { showThumb(i+1); });
}
function showproductthumbnails() {
showThumb(0);
}
这可能是因为浏览器只会在您的脚本完成后更新UI *。如果是这种情况,您可能需要设置显示第一个缩略图的超时时间,并设置显示第二个缩略图等的超时时间。超时将使浏览器有机会刷新UI。如果你认为这应该写成答案,我可以放弃它。 –