Селектор jQuery для получения последнего потомка, у которого нет класса - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть страница с вложенными UL s и LI s, мне нужно получить последние LI каждого UL, поэтому я делаю:

$('li:last-child')

thisпрекрасно работает.

Но мне нужно расширить его, чтобы он получал последнего потомка 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 ]

3 голосов
/ 15 февраля 2011

Используйте метод map() (документы) для создания объекта jQuery путем итерации по элементам <ul> и возврата последнего дочернего элемента <li> элемент без x класса.

Пример: http://jsfiddle.net/e2Da7/2/

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

РЕДАКТИРОВАТЬ: Обновлен мой пример jsFiddle с HTML, который был опубликован в вопросе.

0 голосов
/ 15 февраля 2011

Отфильтруйте элементы с помощью класса.

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

Если классы отличаются среди элементов li, то есть если все элементы не class="x", то что-то вроде

$('li[class=""]:last-child')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...