2014-09-19 7 views
0

У меня есть список, который имеет расширенный класс, который динамически устанавливается. У меня возникли проблемы с поиском следующего элемента списка относительно ТОЛЬКО видимых элементов. .siblings(':visible') и .next(':visible'), похоже, не работают, когда селектор включен в jQuery('.expanded'), предположительно потому, что он ищет следующий расширенный класс.jQuery - Как найти следующего брата, у которого нет класса?

<ul id="list_1" class="list"> 
    <li class="gridImage" data-id="Christmas"></li> //not visible 
    <li class="gridImage" data-id="Christmas"></li> //not visible 
    <li class="gridImage expanded" data-id="Easter"></li> 
    <li class="gridImage" data-id="Valentines"></li> //not visible 
    <li class="gridImage" data-id="Easter"></li> 
    <li class="gridImage" data-id="Miscellaneous"></li> //not visible 
</ul> 
+0

Что делает «ли» видимым? – slicedtoad

+0

@slicedtoad 'li' становится видимым/невидимым другим списком, используя' show() 'и' hide() ' –

ответ

1

вот еще один способ: http://jsfiddle.net/slicedtoad/kqpbh3fv/

$('.expanded').nextAll(":visible").first() 

nextAll, как следующие, но она захватывает все следующие брат и сестра, которые соответствуют селектору. Сначала берет только первый.

+1

Ты потрясающий, спасибо! –

+0

хороший ответ, я тоже пытался, но вы ответили раньше;) – Hitesh

1

Вы можете попробовать что-то вроде

.nextUntil(':visible').last().next() 

, который найти все брат и сестра до следующего видимого, а затем взять последнюю из множества (так что его следующий брат должен быть виден один) затем его следующего брата.

+0

Это работало для кода, который я показал выше, но не работает, когда расширенный класс и видимый/невидимые предметы начинают меняться. –

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