所以我已经搜索了几个小时,但我还没有真正找到解决方案。
似乎 jQuery 方法 .index() 在调用集合中的元素时没有考虑选择器。
澄清一下,当我有一个包含 5 个 li 元素的列表时,其中元素 2、3 和 4 具有类“foo”。当我第一次使用 $('li.foo') 过滤这些元素时,我得到了一个大小为 3 个元素大的集合。当我像 $('li.foo').first().index() 这样对集合中的第一项执行 .index() 时,而不是返回 0(因为它是集合中的第一项并且索引开始从 0 开始计数),它实际上返回 1(或者换句话说,第二项的索引)。
现在对于上面的例子,在我的例子中似乎没有必要使用索引,但在我的代码中我实际上过滤了过滤集($('li.foo').filter('.active'))获取单个元素,然后获取该元素的索引。
问题似乎是 .index 忽略了过滤器和选择器,我在 $.inArray(); 中没有任何运气;
如果有人能阐明如何以可靠的方式获取索引,我将不胜感激!!
最佳答案
index 方法有多种变体可以在这方面提供帮助
您可以在一组元素上调用它并传递 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那么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)
关于javascript - 过滤后的 jQuery 集中元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29291669/