获取列表中元素的数字位置的最jquery-y方法是什么?

时间:2011-04-12 00:48:14

标签: 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()需要一个对象而不仅仅是一个选择器字符串。

2 个答案:

答案 0 :(得分:4)

var selected = $('ul li.selected').index(); // 1

jsFiddle

索引基于0,因此第二项是1的索引。

在旧版本的jQuery中获取索引是令人费解的,但现在它相当简单。 :)

答案 1 :(得分:1)

var selected = $('ul li').index($('.selected'));

fiddle