【问题标题】:Select Nth previous sibling in jQuery?在jQuery中选择第N个上一个兄弟?
【发布时间】:2013-02-04 11:56:19
【问题描述】:

我正在尝试设置我的 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”来做到这一点,但如果我想要倒数第二个、第三个或第 20 个孩子?现在我会这样做吗?

【问题讨论】:

    标签: jquery html css-selectors


    【解决方案1】:

    你使用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 个孩子”,而 $('ul li:nth-child(20)'); 将获得您是文档中每个 &lt;ul&gt; 的第 20 个匹配列表元素。

    编辑

    要执行“倒数第二个”之类的操作,明智的做法是:

    var $ul = $('#mylist > li');
    var $el = $ul.eq($ul.length-2);
    

    但您可能应该检查一下,确保 length-2 不小于 0。

    【讨论】:

      【解决方案2】:

      你想要倒数第三个吗?

      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();
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:
          alert($('ul li').eq(3).text());
          

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

          【讨论】:

            【解决方案5】:

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

            你可以在http://api.jquery.com/nth-last-child-selector/阅读它

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-01-09
              • 2014-07-02
              • 2012-12-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-04-02
              • 2014-02-09
              相关资源
              最近更新 更多