jquery animate:逐个更改元素的不透明度

lau*_*kok 8 jquery opacity jquery-animate

知道如何逐个动画每个特定元素的不透明度,最多16个目标/元素吗?

这将改变所有元素的不透明度,

$('.block-item').animate({
        opacity:0
    },500);
Run Code Online (Sandbox Code Playgroud)

看看这里.

但我希望不透明度一个接一个地改变.这将在它到达第16个元素时停止.

这是html,

<div id="parent_container">

<div class="block-item">1</div>
<div class="block-item">2</div>
<div class="block-item">3</div>
<div class="block-item">4</div>
<div class="block-item">5</div>
<div class="block-item">6</div>
<div class="block-item">7</div>
<div class="block-item">8</div>
<div class="block-item">9</div>
<div class="block-item">10</div>
<div class="block-item">11</div>
<div class="block-item">12</div>
<div class="block-item">13</div>
<div class="block-item">14</div>
<div class="block-item">15</div>
<div class="block-item">16</div>
<div class="block-item">17</div>
<div class="block-item">18</div>

</div>
Run Code Online (Sandbox Code Playgroud)

我出来了这个功能,但它崩溃了任何浏览器,

function opacity_test(index)
{
    $('.block-item').eq( index ).animate({
        opacity:0
    },500);

    setInterval( function() {
        opacity_test(index + 1);
    }, 1000 );
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Nea*_*eal 21

试试这个:

var delay = 0;
$('.block-item:lt(16)').each(function(){ 
               //^^ do for every instance less than the 16th (starting at 0)
    $(this).delay(delay).animate({
        opacity:0
    },500);
    delay += 500;
});
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/maniator/VS8tQ/3/


Aln*_*tak 8

您可以使用"完成回调" .animate()来启动下一个淡入淡出:

function fade(index) {
    $('.block-item').eq(index).animate({
        opacity: 0
    }, function() {
        // on completion, recursively call myself
        // against the next element
        if (index < 15) {
            fade(index + 1);
        }
    })
}

fade(0);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/alnitak/3DuTG/