У меня есть серия li
элементов, и мне нужен наиболее эффективный способ их циклического повторения и возврата индекса. Однако мне нужно перепроверить класс li
и не возвращать индекс, если он имеет определенный класс.
Это в основном для меню в стиле приложения с поддержкой клавиатуры. По сути, рассмотрим следующую разметку:
<ul>
<li class="selected">First Item</li>
<li class="disabled">Second Item</li>
<li class="separator">Third Item</li>
<li>Fourth Item</li>
</ul>
Мне нужна функция, которую я могу использовать для циклического перебора элементов li
и возврата следующего индекса (класс selected
будет применен к следующему выбираемому элементу). В данный момент я зацикливаюсь и просто проверяю, имеет ли li
класс separator
, если это так, увеличивает индекс и возвращает его.
Однако в приведенном выше примере функция должна возвращать 3
, поскольку любой элемент с классом disabled
или separator
не может быть выбран.
Может кто-нибудь дать совет, как мне этого добиться с помощью jQuery? Я думал, что можно было бы сделать что-то вроде этого:
function get_next_index()
{
var current_index = $('ul li.selected');
var index = $('ul li:gt(' + current_index + ')').not('.disabled').not('.separator').get(0).index();
if(!index || index < current_index)
{
return -1;
}
else
{
return index;
}
}