2010-12-02 4 views
3

私はListにULが含まれている.more_storiesのクラスを持っています。文書の読み込み時に初めて3つの要素をULで表示するにはどうすればよいですか?

私は負荷にデフォルトでそれらを隠すために、このコードを使用します。

$('ul.more_stories li').css({'display': 'none'}); 

は今、私はその後UL内の最初の3つのli項目を表示したいです。どのようにjQueryでそれを行うことができますか?

注:同じクラスの複数のULがあります。

事前に

// more stories 
$('ul.more_stories li').css({'display': 'none'}); 
$('ul.more_stories li:gt(2)').show(); 

おかげで..私はそれを試してみて、私は、予期しない結果を得ることができます。

答えて

15

あなたはこのように、代わりに:lt()セレクタをしたい:

$('ul.more_stories li').hide(); 
$('ul.more_stories li:lt(3)').show(); 

あるいは、より高速/ビット単純.slice()を使用して:

$('ul.more_stories li').hide().slice(0, 2).show(); 

このアプローチは、それらすべてを隠し、その後、同じセットを使用し、表示する0-2のインデックス要素を取る。

ます。また、このように、最初の3を隠すことはありません、アプローチを逆にすることができ

$('ul.more_stories li:gt(2)').hide(); 

それとも、再び.slice()使用して:、コメントを

$('ul.more_stories li').slice(3).hide(); 

をします複数の<ul>要素にまたがってこの作業を行うには、.each()ループを使用します。

$('ul.more_stories').each(function() { 
    $(this).children().slice(3).hide(); 
}); 
+0

グレート。最初のULのみで動作します。同じクラスの複数のULがある場合.more_stories ..どのようにすべてのULに適用できますか?ありがとうございました。 –

+0

@Ahmad - その場合、 ':nth-​​child()'が乱雑/繰り返しになるので) '.each()'を使います: '$( 'ul.more_stories') –

+0

ありがとうございました$( 'ul.more_stories li')。css( {'display': 'none'});スライス(0、2).show(); $( "ul.more_stories")。それぞれ(function(){ $(this)。あれは正しいですか? –

関連する問題