2011-02-08 14 views

答えて

2
このような

多分何か:

var delay = 500, t = 0; 
$("li").css('display', 'none').each(function(){ 
    t += delay; 
    var $li = $(this); 
    setTimeout(function(){ 
    $li.fadeIn(); 
    },t); 
}); 
+0

これはちょうどリストを隠すように思われます。 – sat

+1

申し訳ありません、ただそれを修正して(あなたのページでテストしました)。 setTimeoutの中で$(this)を使うのは最高ではありませんでした... – Nabab

+0

P.s Thanks Nabab !!!! – sat

0

ループを、そのリチウムのアニメーションをキューにはsetTimeoutを使用しています。

$('li').each(function() { 
    var li = this; 
    animateLi = function() { 
     li.fadeIn(800); 
    } 
    setTimeout(animateLi, timeout); 
    timeout += 100; 
}); 
+0

私はこれを持っていますが、私は好きです商品の量にかかわらずより洗練された方法でそれを行うには – sat

+0

$( 'li')。css( 'display'、 'none')first()fadeIn(1900).next()。delay(500)。 fadeIn(1900).next()。delay(700).fadeIn(1900).next()。delay(900).fadeIn(1900); – sat

3

これはおそらくない最良の解決策が、それは動作するはずです:

$('li').each(function(i){ 
    var el = this; 
    setTimeout(function(){ 
    $(el).fadeIn(800); 
    },800*i) 
}); 

楽しみのためだけに、再帰バージョン:

function animateLi(i){ 
    $('li').eq(i).fadeIn(800); 
    if ($('li').eq(i+1).length>0) 
    { 
     setTimeout(function(){animateLi(i+1)},800); 
    } 
} 
animateLi(0); 
+0

それは最高ではないかもしれませんが、それは簡潔かつ明確です。 +1 –

+2

しかし、私は 'this'が' setTimeout'の中の 'window'を参照することに気付きました。タイムアウトの外に変数に格納する必要があります。 –

+0

良い、歓声。 – Ivan

0

イヴァンスのメト代わりに、ここでのsetTimeout

function DisplayOneByOne(){ 
    $('ul li:hidden:first').fadeIn('2000', DisplayOneByOne); 
} 
0

のDフェードインコールバック関数を使用して

$(function() { 
    $('ul li:hidden').each(function(idx) { 
     setTimeout(function(el) { 
      el.fadeIn(); 
     }, idx* 1000, $(this)); 
    }); 
}); 

そして、再帰関数は、あなたがそれを行う方法です。

var delay = 200, t = 0; 
$("li").css('display', 'none').each(function(){ 
    t += delay; 
    var $li = $(this); 
    setTimeout(function(){ 
     $li.fadeIn(1900); 
    },t); 
}); 
0

それぞれの後に要素をフェードインする別の方法がありますその他:

$.fn.fadeInNext = function(delay) { 
    return $(this).fadeIn(delay,function() { 
     $(this).next().fadeInNext(); 
    }); 
}; 

$('li').hide().first().fadeInNext(1000); 
関連する問題