如何获取jQuery对象中元素相对于对象的索引?

时间:2012-08-23 11:11:36

标签: jquery

如果我有一个由多个jQuery对象组成的对象,那就是:

var $listItems $('ul.list1 li').add($('ul.list2 li'));

如何获取数组中任何元素的索引,即:

$listItems.click(function() {
    console.log($(this).index());
});

这对我来说不起作用,因为当点击第二个列表中的项时,索引显然是相对于DOM的索引,而不是jquery对象。

我如何获得索引?

http://jsfiddle.net/ZdCsu/

2 个答案:

答案 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