Использование jQuery для возврата следующего элемента списка в отфильтрованный список - PullRequest
2 голосов
/ 05 марта 2010

У меня есть следующий список

<ul>
  <li id="item1">Item 1</li>
  <li id="item2">Item 2</li>
  <li>Item 3</li>
  <li id="item4">Item 4</li>
</ul>

Используя jQuery , я пытаюсь просмотреть список LI, идентификаторы которых начинаются с "item".

var nextItemWithItemID = $("#item2").next("li[id^='item']);

Однако, когда я запускаю этот код, я получаю «Элемент 3», а не «Элемент 4».

Как я могу получить jQuery для получения правильного следующего элемента из отфильтрованного списка LI?

Ответы [ 2 ]

6 голосов
/ 05 марта 2010

Вы хотите использовать nextAll (). Далее будет только получить родного брата сразу после текущего элемента. NextAll () рассмотрит всех следующих братьев и сестер.

var nextItemWithItemID = $('#item2').nextAll('li[id^=item]:first');
1 голос
/ 05 марта 2010

У меня была эта проблема прошлой ночью. Хотя @tvanfosson предоставляет способ получить доступ ко всем последующим братьям и сестрам, если вы хотите, чтобы следующий элемент соответствовал этому критерию , я предложил следующее решение (адаптированное к вашему примеру):

var nextItemWithItemID = $("#item2").nextUntil("li[id^='item']").andSelf().next();

Вот и все. Использование nextUntil() захватывает все до термина, но не включает его, поэтому вы должны использовать next(). Но если возвращенный набор пуст (если между вашим начальным селектором и следующей вещью, соответствующей вашему запросу) ничего нет, это не сработает - andSelf() решает это.

...