已过滤的jQuery集中元素的索引

时间:2015-03-27 01:09:30

标签: javascript jquery html css performance

所以我现在已经搜索了几个小时,但我还没找到解决方案。

在调用集合中的元素时,似乎jQuery方法.index()不会考虑选择器。

为了澄清,当我有一个包含5个li元素的列表时,其中元素2,3和4具有类" foo"。当我第一次使用$(' li.foo')过滤这些项目时,我得到一个大小为3个元素的后退。当我在集合中的第一个项目上执行.index()时,就像$(' li.foo')。first()。index(),而不是返回0(因为它' s集合和索引中的第一项从0开始计数,它实际上返回1(或换句话说,第二项的索引)。

现在通过上面的示例,我的示例中似乎没有必要使用索引,但在我的代码中我实际上过滤了过滤集($(' li.foo')。 (' .active'))获取单个项目,然后获取该项目的索引。

问题似乎是.index忽略了过滤器和选择器,而我在$ .inArray()中没有运气;

如果有人能说明如何以确定的方式获得指数,我将非常感激!!

1 个答案:

答案 0 :(得分:3)

索引方法有多种变体可以帮助解决这个问题

您可以在一组元素上调用它并传递element whose index has to be found as an argument

var $lis = $('li.foo');
var idx = $lis.index($lis.first());//will return 0

另一种方法是传递selector as an argument然后索引将根据当前元素相对于元素集返回的元素集中元素位置的位置返回索引值

var $el = $('li.foo').first();
var idx = $el.index('li.foo');

至于你的问题

var $lis = $('li.foo'), $active = $('li.foo').filter('.active');
var index = $lis.index($active)