如果我有一个由多个jQuery对象组成的对象,那就是:
var $listItems $('ul.list1 li').add($('ul.list2 li'));
如何获取数组中任何元素的索引,即:
$listItems.click(function() {
console.log($(this).index());
});
这对我来说不起作用,因为当点击第二个列表中的项时,索引显然是相对于DOM的索引,而不是jquery对象。
我如何获得索引?
答案 0 :(得分:1)
相对索引在jQuery中总是有点痛苦,因为堆栈中的元素可能与索引没有任何逻辑关系。
你可以这样做:
$('#list_one li').add('#list_two li').each(function(index) {
//assign a contrived index to each element in turn, relative to the stack
$(this).data('stack-index', index);
}).on('click', function() {
//then retrieve it on click
alert($(this).data('stack-index'));
});
此外,在您提出的具体示例中,不需要add()
,但也许在您的真实代码中。
答案 1 :(得分:1)
您可以做的是将jQuery对象转换为数组:
var $listItems = $('ul.list1 li').add($('ul.list2 li'));
$listItems.click(function() {
console.log($listItems.toArray().indexOf(this));
});
您更新的jsfiddle