开发者

How to display the first 3 elements in UL only on document load?

开发者 https://www.devze.com 2023-01-29 00:17 出处:网络
I have a List (UL) which has a class of .more_stories the UL contains LI. I use this code to hide them by default on load:

I have a List (UL) which has a class of .more_stories the UL contains LI.

I use this code to hide them by default on load:

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

Now I want to display the first 3 li items inside the UL after tha开发者_Go百科t. How can I do that in jQuery?

-Note: I have several ULs with the same class.

I try that and I get unexpected results..

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

Thanks in advance.


You want the :lt() selector instead, like this:

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

Or, a bit simpler/faster using .slice():

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

This approach hides them all, then using the same set and taking the 0-2 index elements to show.


You can also reverse the approach, never hiding the first 3, like this:

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

Or, again using .slice():

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

For comments, to make this work across multiple <ul> element, use a .each() loop, like this:

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

精彩评论

暂无评论...
验证码 换一张
取 消