jQuery选择器来获取没有类的最后一个子节点

时间:2011-02-15 19:07:10

标签: jquery-selectors

我有一个嵌套ULLI页面,我需要获取每个LI的最后一个UL,所以我正在做:

$('li:last-child')

这很有效。

但是我需要对此进行扩展,以便获得每个LI的最后一个UL个孩子,其中LI没有给定的类(x)。例如:

<ul>
    <li class="x">1</li>
    <li>2</li>
    <li class="x">3</li>
    <li>4</li>
    <li>5</li>
    <li class="x">
        6
        <ul>
            <li class="x">7</li>
            <li>8</li>
            <li class="x">9</li>
            <li>10</li>
            <li>11</li>
            <li class="x">12</li>
            <li class="x">13</li>
        </ul>
    </li>
</ul>

我需要返回LI 5和11(因为这些是他们的父ul中没有.x的最后一个孩子)

我怎样才能优雅地做到这一点?

由于

2 个答案:

答案 0 :(得分:3)

使用map()(docs)方法通过迭代<ul>元素并返回最后一个没有<li>类的子x元素来创建jQuery对象。

示例: http://jsfiddle.net/e2Da7/2/

var lastLisNoX = $('ul').map(function() {
    return $(this).children('li:not(.x)').get(-1);
});

编辑: 使用问题中发布的HTML更新了我的jsFiddle示例。

答案 1 :(得分:0)

使用类过滤掉元素。

$('li:not(.x):last-child')

如果li元素中的类不同,那就是如果所有元素都不是class="x"那么类似

$('li[class=""]:last-child')