10

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

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

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

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

并获取's.active集合中的位置。a

有没有类似indexOf()jQuery 的函数?该index()方法不起作用

4

4 回答 4

11

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

$searchIn.index($searchFor)

它将返回$searchFor集合中的索引$searchIn

在您的示例中:

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

​</p>

于 2012-05-02T00:57:07.137 回答
0

你只需要给index函数一个 jQuery 对象:

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

alert(index);

现场演示 ​</p>


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

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

alert(index);

现场演示

于 2012-05-02T01:30:29.417 回答
0

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

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

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

于 2012-05-02T05:53:31.737 回答
-2

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

 $('ul a.active')

但是,获取位置是什么意思?你是说位置吗?或网址?

如果你想知道你click在哪一个可以说..你会$(this)在你的事件函数中使用。这是一个示例,如果该类有多个,则返回您单击的元素的当前位置.active

要获得职位:

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

要获取 URL 位置:

 $('ul a.active').click(function(){
     alert( $(this).attr('href') );
 })
于 2012-05-02T00:44:12.117 回答