我试图逐个动画每个div的margin-left
:
var array = ['#lazer', '#ergonomic', '#myagkaya-chast', '#krepkost'];
var i = 0;
while (i < array.length) {
array[i].animate({
marginLeft: '40px'
}, 1000, function () {
i++;
});
}
答案 0 :(得分:3)
您需要从动画回调中移除i++
,因为它是异步的,而是扩展动画效果使用jQuery.delay()
来抵消开始时间。
var array = ['#lazer', '#ergonomic', '#myagkaya-chast', '#krepkost'];
var i = 0;
var delay = 100;
while (i < array.length) {
$(array[i]).delay(delay * i).animate({
marginLeft: '40px'
}, "linear");
i++;
}
答案 1 :(得分:0)
您忘记了jQuery对象包装器$(array[i])
。另外,如果您不打算使用显示的for循环,请将i
变量放在animate()
函数之外。
var array = ['#lazer', '#ergonomic', '#myagkaya-chast', '#krepkost'];
for (var i = 0; i < array.length; i++) {
$(array[i]).animate({
marginLeft: '40px'
}, 1000);
}