2010-03-05 3 views
2

Я следующий списокИспользование JQuery для возврата следующего элемента списка в отфильтрованный список

<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, я пытаюсь пройти список LIS, чьи идентификаторы начинаются с «пункта».

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

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

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

ответ

6

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

var nextItemWithItemID = $('#item2').nextAll('li[id^=item]:first'); 
+0

@tvanfosson Не могу поверить, что я никогда не сталкивался с этой проблемой раньше, на самом деле был удивлен .next() не работал должным образом ... Я мог бы поклясться, Что ж. +1 Это правильный подход. –

+0

@ Ник Кравер - это почти есть. Это даст вам все из них, но еще не доводит OP до следующего элемента. Я уверен, что все, что вам нужно сделать, это проиндексировать его, не так ли? .index (0)? Не уверен. Мог бы быть явным с этим. –

+0

@DN - обманут примером. Вероятно, у него должен быть фильтр ': first'. Будет обновляться. – tvanfosson

1

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

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

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

Смежные вопросы