我怎样才能访问倒数第二个孩子?

问题描述:

我试图访问第二个到最后li。我试过下面的代码,但它不工作:我怎样才能访问倒数第二个孩子?

$('ul#selectTheme li:last').eq(-1).addClass('selected'); 

我该怎么做?

+1

'UL #selectTheme li:last'只选择一个'li'(最后一个),调用'eq(-1)'将再次返回单个'li'(最后一个)。 – JLRishe

尝试使用:nth-last-child() selector

$('ul#selectTheme li:nth-last-child(2)').addClass('selected'); 

只需使用prev()应该足够了:

$('ul#selectTheme li:last').prev('li').addClass('selected'); 

jsFiddle Demo

+0

这假设所有'ul'的孩子都是'li's,这应该是这种情况,但遗憾的是并不总是如此。 – JLRishe

+0

谢谢@JLRishe。请参阅编辑。 – BenM

你可以使用length属性来得到这样的:

var themes = $('#selectTheme li'); 
$(themes[themes.length - 2]).addClass('selected'); 

这有没有使用任何较慢的jQuery假选择器的附加好处。

我也省略了选择器的ul部分,因为这不必要 - id选择器足够具体。

我相信你可以简单地传递一个负数到.eq()从最后得到第n个元素。 -1是最后一个元素等等。

$('ul#selectTheme li').eq(-2).addClass('selected'); 

看看这里查看更多详情 - .eq()

试试这个:

$('ul#selectTheme li').eq(-2).addClass('selected'); 

你的情况似乎很像的文档中给出了一个例子:http://api.jquery.com/eq/