http://jsfiddle.net/fxLcy/ - 使用setTimeout
的示例http://jsfiddle.net/fxLcy/1/ - 这是没有setTimeout的演示。所有元素都在正确的位置,但我真的需要延迟动画= /
我想通过css transition和setTimeout每行放置6张卡片。关键是,我不能在setTimeout中使用我的left和top参数的增量,因为这个东西只是总结了我的所有增量并将元素设置到最终位置。
var self = $(this);
if (increment % 6 === 0 && increment !== 0) {
topIncrement++;
leftIncrement = 0;
};
setTimeout(function() {
self.css({'left' : 10 + leftIncrement * (resizedWidth + 20),
'top' : $("#controlPanel").height() + 10 + topIncrement * (resizedHeight + 20)});
}, increment * 500)
leftIncrement++;
increment++;
答案 0 :(得分:2)
所以问题是变量是在超时时间内共享的,你希望javascript在每个x和y位置关闭(你希望每个tmeout都能获取x / y值的快照--javascript关闭)。 / p>
所以拿上面的代码并将setTimeout更改为以下内容我认为这样做了(请参阅updated fiddle)
var valuex = 10 + leftIncrement * (resizedWidth + 20);
var valuey = $("#controlPanel").height() + 10 + topIncrement * (resizedHeight + 20)
setTimeout(function() {
self.css({'left' : valuex,
'top' : valuey});
}, increment * 500)