转换每个div的过程

时间:2014-07-14 20:59:59

标签: javascript jquery arrays

我试图逐个动画每个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++;
    });
}

FIDDLE

2 个答案:

答案 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++;
}

Demo

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

JSFiddle