在jQuery中选择第N个兄弟姐妹?

时间:2009-06-20 21:26:05

标签: jquery html css-selectors

我正在尝试设置我的jQuery选择器,但我不确定如何编写它。

我有一个看起来像这样的无序列表:

<ul>
    <li>something</li>
    <li>something</li>
    <li>something</li>
    <li>something</li>
    <li class="last">something</li>
</ul>

现在我知道我是否想通过使用“ul li.last”或“ul.li:last”来选择我能做到的最后一个孩子但是如果我想要从倒数第二,第三或第二的第二个孩子那么?我现在会这样做吗?

5 个答案:

答案 0 :(得分:17)

您使用eq

$('ul li').eq(X);

其中X是您想要的元素的从0开始的索引。您也可以使用selector form

$('ul li:eq(X)');

使用nth-child

也可以获得类似的结果
$('ul li:nth-child(X)');

文档说明了nth-childeq

之间的区别
  

虽然:eq(index)只匹配一个元素,但它匹配多个:每个父项都有一个索引。具有偶数,奇数或等式的每个父项的倍数。指定的索引是一个索引,与:eq()从零开始。

通过执行$('ul li').eq(19);,您将获得查询的单个第20个匹配元素(因此,如果文档中有多个列表,则不会为您提供“所有19个孩子”,而{{1会得到文档中每个$('ul li:nth-child(20)');的第20个匹配列表元素。

修改

要做一些像“倒数第二”这样的事情,理智的做法就是:

<ul>

但你应该检查一下,确保长度2不小于0.

答案 1 :(得分:3)

你想要最后一个?

var $ul = $("ul li");
$ul.find(":eq(" + Math.max(0, $ul.length - 3) + ")");

快速解释:$ ul(这是一个jQuery对象)的长度是找到多少个li。所以你可以使用它和“:eq(n)”选择器来获得所需索引的li。

我使用Math.max,以防列表太短(少于3个li)。

这也可行,但显然不是最佳方式:

var $ul = $("ul li:last").prev().prev();

答案 2 :(得分:0)

对于第三和第二十,您可以ul li:eq(3)ul li:eq(20)。倒数第二,你可以用nth-childequation参数选项做一些事情,虽然我不确定。

答案 3 :(得分:0)

alert($('ul li').eq(3).text());

这将提醒第三个列表项的文本。

答案 4 :(得分:0)

jQuery团队在1.9版本中添加了此功能

您可以在http://api.jquery.com/nth-last-child-selector/

了解相关信息