如何从jQuery中的ul列表中选择倒数第二个(最后一个)li元素?

时间:2011-08-16 18:03:08

标签: jquery

如果我有这样的话:

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

我需要将addClass“extra”添加到倒数第二个(例如,如果我有5个li元素,额外的类将被添加到第4个li元素中)。

所以这种情况的结果将是:

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li class="extra">4</li>
<li>5</li>
</ul>

提前致谢

7 个答案:

答案 0 :(得分:11)

$("li:last").prev("li").addClass("class-to-add")

http://api.jquery.com/prev/

http://api.jquery.com/last-selector/

答案 1 :(得分:6)

如果只有一个列表,只需将负索引传递给eq()[docs]方法。

$("ul li").eq(-2).addClass("extra");

听起来你正在使用旧版本的jQuery。

Here's an example显示它在jQuery 1.3.2中工作。

答案 2 :(得分:4)

$("ul li").last().prev().addClass("foo");

答案 3 :(得分:1)

由于您的所有<li>元素都是兄弟元素,并且它们之间没有其他元素,您可以使用last()后跟prev()

$("li").last().prev().addClass("extra");

中间还有其他元素,您必须使用prevAll()代替:

$("li").last().prevAll("li").first().addClass("extra");

答案 4 :(得分:1)

$('li').eq($('li').length-2).addClass("extra")

答案 5 :(得分:0)

var items = $("ul").children();
var penultimate = items.eq(items.length - 2);
penultimate.addClass("extra");

答案 6 :(得分:0)

您可以使用以下内容:

$('li').eq($('ul li').length - 2);

JS Fiddle demo

参考文献: