2012-08-23 156 views
0

如果我有一個由多個jQuery的對象中的對象,那就是:如何獲取jQuery對象內相對於該對象的元素的索引?

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

我怎樣才能得到任何元素的索引數組中,那就是:

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

這不工作,因爲當第二個列表中的項目被點擊時,顯然索引是相對於DOM的索引,而不是jquery對象。

我該如何獲得索引?

http://jsfiddle.net/ZdCsu/

+0

你能提供的jsfiddle的樣本? – davids

+0

當然,它的底部 – Jai

回答

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(),但也許在你真正的代碼存在。

+0

是的,我意識到,我發佈後,它相對於我的情況,但我應該在一個選擇器中完成所有。這似乎很缺乏jQuery的一面,我會認爲這將是一個經常要求的功能。 – Jai

1

你可以做的是jQuery對象轉換爲數組什麼:

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

$listItems.click(function() { 

    console.log($listItems.toArray().indexOf(this)); 

});​ 

你更新jsfiddle

+0

都是很好的解決方案,謝謝! – Jai

相關問題