#jquery
#jquery
Вопрос:
Я хочу получить индекс элемента в списке, подобный этому:
<ul>
<li>Option 1</li>
<li class="selected">Option 2</li>
<li>Option 3</li>
</ul>
// doesn't work
var selected = #('ul#options li').index('.selected');
// selected should == 1
Я мог бы сделать это с
var selected = -1;
$('ul#options li').each(function(a, li){
if($(li).hasClass('selected')){
selected = $(li).parent().children().index(li);
}
});
// selected == 1
но, похоже, должен быть более простой способ добиться этого.
Редактировать:
Я придумал
$('ul#options li').index($('ul#options li.selected'));
какой из них лучше. Оказывается.index() нужен объект, а не просто строка селектора.
Ответ №1:
var selected = $('ul li.selected').index(); // 1
Индекс основан на 0, поэтому вторым элементом является индекс 1
.
Получение индекса в старых версиях jQuery было сложным, но сейчас это довольно просто. 🙂
Комментарии:
1. Ответ был молниеносным, пока я все еще возился с вопросом! Спасибо за предупреждение jsFiddle.
2. К вашему СВЕДЕНИЮ: это отлично работает в версии 1.5, но не выполняется < 1.4.2 — Используйте решение mcgrailm для более ранних версий jQuery.
Ответ №2:
var selected = $('ul li').index($('.selected'));
Комментарии:
1. Я думаю, что объект $ (‘.selected’) должен выполнить полный поиск. Тем не менее, это работает < 1.4.2