Jquery每个循环+ setTimeout问题的增量

时间:2014-02-10 19:05:30

标签: javascript jquery html css css3

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++;

1 个答案:

答案 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)