jQuery indexOf函数?

我正在尝试在jQuery集中获取元素的位置。

这是我到目前为止所尝试的内容。

我希望能够做到这样的事情:

$('ul').find('a').indexOf('.active'); 

并在。的集合中获取.active的位置。

是否有像jQuery的indexOf()函数? index()方法不起作用

如果你将一个jQuery集( $searchFor )作为参数传递给另一个jQuery集( $searchIn )的index方法,即

 $searchIn.index($searchFor) 

它将在set $searchIn $searchFor $searchIn

在你的例子中:

 $('ul a').index($('ul a.active')); 

您只需要为index函数提供一个jQuery对象:

 var elements = $('ul a'); var index = elements.index(elements.filter('.active')); // 2 alert(index); 

现场演示


开箱即用没有这样的function ,它可以像这样轻松完成:

 var index = -1; $('ul a').each(function(i){ if ($(this).hasClass('active')){ index = i; return false; } }); alert(index); 

现场演示

你的逻辑是合理的,你只是抓住了错误的元素: http : //jsfiddle.net/xz9dW/19/

 var index = $('ul a.active').closest('li').index(); 

a链接没有index()值,因为它没有兄弟; 你必须抓住li

你可以通过在选择器中询问它来做到这一点:

  $('ul a.active') 

但是你得到这个位置是什么意思? 你的意思是位置? 或URL?

如果你想知道你click哪一个让我们说..你会在你的事件function中使用$(this) 。 下面是一个示例,它返回您单击的元素的当前位置,如果有多个.active类:

获得这个职位:

  $('ul a.active').click(function(){ alert( $(this).position() ); }) 

要获取URL位置:

  $('ul a.active').click(function(){ alert( $(this).attr('href') ); })