Получить коллекцию строк класса "b" после строки класса "a" до следующей строки не "b"? - PullRequest
3 голосов
/ 02 марта 2011

Я еще не совсем ниндзя-селектор jQuery, поэтому я спрашиваю об этом в надежде, что кто-нибудь сможет сделать на него удар.

Я использую шаблоны jQuery для создания таблицы со строками на основена вложенных словарях (они вложены в 5 слоев или около того).Он основан на данных, касающихся организационной структуры и людей в каждой группе.Что я хочу сделать, основываясь на приведенном ниже частичном коде, так это - для каждой строки «команды» - получить ряд «людей», принадлежащих этой команде.Вот то, что у меня есть, с отступом для удобства чтения.

<tr class="division">...</tr>
    <tr class="team">...</tr>
        <tr class="person">...</tr>
        <tr class="person">...</tr>
    <tr class="team">...</tr>
        <tr class="person">...</tr>
        <tr class="person">...</tr>
        <tr class="person">...</tr>
<tr class="division">...</tr>
    <tr class="team">...</tr>

Теперь у меня есть селектор jQuery, который получает все class="team" строк, а затем для каждой строки я пытаюсьнайти селектор для получения каждой последующей строки class="person" до следующей строки, не являющейся person.Я не могу понять это правильно. Нужно ли что-то использовать вместо метода .nextAll() ?

$('table tr.team').each(function () {
    var personRows = $(this).nextUntil('tr.team');
    console.log('row count: ' + personRows.length);
});

Пока я подключаюсь к консоли, поэтому вывод консоли для HTML выше должен совпадатьчто-то вроде ...

    > row count: 2
    > row count: 3

К сожалению, из-за этой строки класса "division" я получаю нечто большее.

    > row count: 2
    > row count: 4

Я имеюя ломал голову, пытаясь просмотреть API, чтобы получить то, что я хочу, но я не могу получить желаемый эффект.Есть идеи?Какие-нибудь элегантные решения?Должен ли я где-нибудь добавить предложение if, чтобы определить, является ли строка строкой, которую я хочу включить в свой селектор?

1 Ответ

3 голосов
/ 03 марта 2011

Хорошо, полагаю, я только что понял это. Я долго пытался это выяснить и не смог, пока не отправил вопрос ... вы знаете, как это происходит.

В любом случае .filter() - мой друг.

 var personRows = $(this).nextUntil('tr.team').filter('tr.person');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...