2011-01-06 28 views
5

我有图片/文本链接的列表,jQuery的:选择列表中的最后4项

<ul> 
<li>link 1</li> 
<li>link 2</li> 
<li>link 3</li> 
<li>link 4</li> 

<li>link 5</li> 
<li>link 6</li> 
<li>link 7</li> 
<li>link 8</li> 
</ul> 

和I类名单在我的.css文件,

li { 
    float:left; 
    margin:0px 5px 5px 0px; 
} 

但随后我希望列表中的最后4个项目在边距底部没有5px空间的情况下显示。所以我想使用jQuery来选择最后4个项目,并将其CSS样式更改为marginBottom:0px;

的问题是,这是jQuery的选择最后一项:

li:last 

但对于最后4?或者最后5个或6个?

感谢。

+0

是它!感谢您指出! :-) – laukok 2011-01-06 20:00:03

回答

21
$('li').slice(-4).css('color', 'red') 

Example

+0

上述代码将返回最后五个元素,因为切片基于0。 – superUntitled 2011-01-06 17:27:18

+0

有趣。你尝试过这个例子吗?似乎从一开始就是0。 `$('li')。slice(-4).length` >> 4 – 2011-01-06 17:28:07

+0

@super,它选择最后四个因为它是负数。所以它从最后数4 .. – 2011-01-06 17:29:23

0

我想你可以试试这个$("li").slice(-5);

+1

应该是-4(*根据OP *) – 2011-01-06 17:32:13

+0

这个数字并不重要,是吗? – 2011-01-06 17:34:22

+0

@Jishny,不是真的.. *被拿走了,因为从两种方法中建议使用零基础需要一个不同于此方法的数字。* – 2011-01-06 17:38:09

1

您可以使用过滤方法

var elems = $('ul li'); 
elems.filter(function(idx){ 
    /* we use 5 because the index starts at 0 */ 
    return idx > elems.length-5; 
}).css('margin-bottom','0px'); 

演示:http://www.jsfiddle.net/Cw3uu/

1
$('li').slice(-4).addClass('last-li-items'); 

然后在你的CSS:

.last-li-items { 
    margin-bottom:0 !important; 
} 
2
var e = $('li').slice(-4).css('margin-bottom', '0px');  

Demo

1

您可以使用.slice()

$('li').slice(-4) 

或者,你可以使用jQuery的:gt()

var size = $('li').size(); 
$('li:gt('+(size-5)+')');