Div上的衰落循环

时间:2013-07-14 10:34:49

标签: jquery html css fade cycle

我在div中有一些div,它位于div中。最外面的div为.major_data然后是.commitment_box,然后是子div .commitment。承诺处于淡出周期,因此一个fadeOut()和另一个fadeIn()。问题就出现了,在最后一个div为fadeOut()后,第一个没有出现。如需更多许可,请参阅此fiddle

JS:

function tick() {
    var $obj = $(".major_data .commitment_box .commitment");
    $obj.first().delay(1000).fadeOut(function () {
        $obj.first().insertAfter($obj.last());
        tick();
    });
}
tick();

HTML:

<div class="major_data">
    <div class="commitment_box">
        <div class="commitment">
            <p>Alex:</p>
            <p>He's works great.</p>
        </div>
        <div class="commitment">
            <p>Alex 1:</p>
            <p>He's works great.</p>
        </div>
        <div class="commitment">
            <p>Alex 2:</p>
            <p>He's works great.</p>
        </div>
        <div class="commitment">
            <p>Alex 3:</p>
            <p>He's works great.</p>
        </div>
        <div class="commitment">
            <p>Alex 4:</p>
            <p>He's works great.</p>
        </div>
    </div>
</div>

CSS:

.major_data .commitment_box {
    text-align: center;
    height: 40px;
    overflow: hidden;
}
.major_data .commitment_box .commitment p {
    display: inline-block;
}
.major_data .commitment_box .commitment p:first-child {
    font-weight: bold;
    margin-right: 20px;
}

你可以清楚地看到问题是什么。在Alex 4...之后,第一个没有出现。

1 个答案:

答案 0 :(得分:3)

您忘了向第一个fadeIn()添加obj。因此,在一个周期消失后,您隐藏它,所有div都设置为display:none。你的代码:

function tick() {
    var $obj = $(".major_data .commitment_box .commitment");
    $obj.first().fadeIn().delay(1000).fadeOut(function () {
        $obj.first().insertAfter($obj.last());
        tick();
    });
}
tick();

更新了演示:http://jsfiddle.net/hungerpain/NMSpx/1/