jQuery 选择器获取最后一个没有类的子元素

发布于 2024-10-17 13:11:58 字数 974 浏览 2 评论 0原文

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

$('li:last-child')

这效果很好。

但我需要扩展它,以便它获得每个 UL 的最后一个子 LI,其中 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 的子级)

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

I have a page of nested ULs and LIs, I need to get the last LI of each UL, so I'm doing:

$('li:last-child')

this works great.

But I need to extend this so it gets the last child LI of each UL, where the LI doesn't have a given class (x). For example:

<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>

I need to return LI 5 and 11 (as these are the last children within their parent ul that don't have .x)

How can I do this elegantly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海拔太高太耀眼 2024-10-24 13:11:58

使用 map()(docs)< /sup> 方法,通过迭代

    元素来创建 jQuery 对象,并返回最后一个不带

  • 子元素代码>x类。

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

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

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

Use the map()(docs) method to create a jQuery object by iterating over the <ul> elements, and returning the last child <li> element without an x class.

Example: http://jsfiddle.net/e2Da7/2/

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

EDIT: Updated my jsFiddle example with the HTML that was posted in the question.

柠檬心 2024-10-24 13:11:58

过滤掉带有类的元素。

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

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

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

Filter out the elements with a class.

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

If the classes are different amongst the li elements, that is if all the elements are not class="x" then something like

$('li[class=""]:last-child')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文