已筛选jQuery集中元素的索引

Index of an element in a filtered jQuery set

本文关键字:索引 元素 集中 筛选 jQuery      更新时间:2023-09-26

所以我已经搜索了几个小时,还没有真正找到解决方案。

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

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

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

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

如果有人能阐明如何以一种可靠的方式获得指数,我将不胜感激!!

索引方法有多种变体可以在这方面帮助

您可以在一组元素上调用它,并将必须找到其索引的元素作为参数传递

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

另一种方法是将选择器作为自变量传递,然后index将基于当前元素相对于元素在元素集返回的元素集中的位置返回索引值

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)