一个接一个地显示元素

时间:2012-08-02 10:49:34

标签: jquery

我试图一个接一个地显示元素...例如,如果div中有10个元素,我想一个接一个地显示。但是一次只能有一个项目。我写了下面的代码,但它没有按预期工作..

 function fades(c) {
            var x = c;
            c.fadeIn(3000, function () {
                if (c.is('last-child')) {
                    c.fadeOut(3000);
                    fades(c);
                }
                else {
                    c.fadeOut(3000);
                    fades(c.next());
                }
            });
  }

由于

2 个答案:

答案 0 :(得分:3)

<强> HTML

<div id="fades">
    <div>Hello #1</div>
    <div>Hello #2</div>
    <div>Hello #3</div>
    <div>Hello #4</div>
    <div>Hello #5</div>
    <div>Hello #6</div>
    <div>Hello #7</div>
    <div>Hello #8</div>
    <div>Hello #9</div>
    <div>Hello #10</div>
</div>

<强>的JavaScript

// First hide them all
$("#fades div").hide();

function fades($div, cb) {
    $div.fadeIn(100, function () {
        $div.fadeOut(100, function () {
            var $next = $div.next();
            if ($next.length > 0) {
                fades($next, cb);
            }
            else {
                // The last element has faded away, call the callback
                cb();
            }
        });
    });
}

function startFading($firstDiv) {
    fades($firstDiv, function () {
        startFading($firstDiv);
    });
}

startFading($("#fades div:first-child"));

这是一个小提琴:http://jsfiddle.net/VesQ/chw3f/5/

答案 1 :(得分:0)

试试这个..

尝试使用回调函数。操作完成后执行回调功能。

function fades(c) {
            var x = c;
            c.fadeIn(3000, function () {
                if (c.is('last-child')) {
                    c.fadeOut(3000, function() {
                         fades(c);
                    });

                }
                else {
                    c.fadeOut(3000, function() {
                         fades(c.next());
                    });
                }
            });
  }