逐个淡化元素

时间:2014-08-26 16:51:45

标签: javascript jquery

这是我的代码,它可以工作,但我想使用循环来清理代码。而不是有这么多行代码。我尝试用[i]替换[0],但它只会让所有东西都消失在一起。

JSFIDDLE

var $icons = $('#header li').hide();

for(var i = 0; i < $icons.length; i++) {
    $($icons[0]).fadeIn(function() {
        $($icons[1]).fadeIn(function() {
            $($icons[2]).fadeIn(function() {
                $($icons[3]).fadeIn(function() {
                    $($icons[4]).fadeIn(function() {
                        $($icons[5]).fadeIn(function() {
                            $($icons[6]).fadeIn(function() {
                                $($icons[7]).fadeIn(function() {
                                    $($icons[8]).fadeIn(function() {
                                        $($icons[9]).fadeIn(function() {

                                        });
                                    });
                                });
                            }); 
                        });
                    });
                });
            }); 
        });
    });
}

3 个答案:

答案 0 :(得分:3)

你可以使用递归:

function FadeMe($array, index) {
    if (index >= $array.length) return;

    $array.eq(index).fadeIn(function() {
        if (index + 1 < $array.length) {
            FadeMe($array, index + 1);
        }
    });
}

var $icons = $('#header li').hide();
FadeMe($icons, 0);

小提琴:http://jsfiddle.net/0v3L0g6t/

答案 1 :(得分:0)

试试这个:

$icons.each(function(index) {
    $(this).delay(400*index).fadeIn(300);
});

<强> DEMO

答案 2 :(得分:0)

试试这个:

var $icons = $('#header li').hide();

function doSetTimeout(i) {
      setTimeout(function() { $icons[i].fadeIn('slow'); }, 1000);
    }

for (var i = 0; i < $icons.length; i++){
      doSetTimeout(i);
}