2013-01-14 46 views
0

时使用jquery.index()我有这个简单的使用jquery.index()想回有一类元素的值:如何寻找

的HTML:

<ul> 
    <li>foo</li> 
    <li class='on'>bar</li> 
    <li>roo</li> 
</ul> 

的JS :

var idx = $('li').index('.on'); 

它返回-1如果类是除了第一个任何元件上。我错过了什么?

JSFIDDLE

+0

标题和问题不匹配。 –

+0

我刚刚尝试了两种代码...你和[Vega的代码](http://stackoverflow.com/questions/14325608/how-to-use-jquery-index-when-looking-for-class/14325632# 14325632),并且两者都很好... –

回答

2

当与由选择器(在这种情况下.on)相匹配的集合中的一个选择器.index返回jQuery对象的第一个元素的位置(即,第一<li>)使用。

由于第一<li>不是由.on元素(其中仅第二<li>匹配)相匹配的集合中的一部分被视为不存在,并作为记录.index返回-1。

如果.on是在第一<li>然后.index返回一个元素的索引仅包含该元素集合中,因此结果将是0

相反,如果你想找到你可以使用$(".on").index("li")所有<li>元素中的元素与.on指数 - 这将永远只要任何<li>有类on返回一个索引。

2

我想你需要的是$('.on').index('li')及以下的定义。

.index(selector)selector表示一个jQuery集合,其中查找的元件。

http://jsfiddle.net/R6mjG/2/

+0

谢谢,但是为什么当第一个'li'中的班级工作时呢? – greener

+0

@greener请参阅修订后的答案..当与定义一起阅读时,这很有意义。 –

0

你需要做的$('.on').index()

1

使用下。

var idx = $('li.on').index();