2010-08-17 33 views
1

我遇到了jQuery中匹配元素的問題。 基本上我有列表項,並且onclick我想比較兩個元素以找出它在列表中的位置,即。如何比較沒有ID或類的兩個元素jQuery

<ul id="someID"> 
    <li>something</li> 
    <li>something</li> 
    <li>something</li> 
</ul> 

// here is the script 
var row = 0, 
    element = $('#someID > li:eq(1)').get(0); 

$('#someID > li').each(function(index, value) { 
    if (value == element) { 
     row = index; 
     return false; 
    } 
} 

element是在適當的範圍,這一切都應該工作(或因此我認爲)。我看到它可能不起作用的唯一原因是瀏覽器將每個list-item視爲相同,因爲它的innerHTML是相同的,並且沒有idclass

有沒有其他一些方法可以獲得列表中列表項的位置?

+1

你的代碼適用於只要你添加你丟失的右括號。嘗試一下:http://jsfiddle.net/83hcP/ – user113716 2010-08-17 20:54:12

+0

那麼我發現了一個關於index()的好東西,那很好。但事實證明,這實際上並不是我的問題,它是#someID。這是我的代碼簡化了,我沒有得到正確的元素來循環。 – Tom 2010-08-17 20:59:18

回答

4
var index = $('#someID > li').index(element); 

index

0

如果由於某種原因$的.index()不爲你工作...

任何原因,你無法通過添加屬性或類對象,然後循環項目列表中找到它?

$('li').click(function() 
{ 
    $(this).addClass('Selected'); 
    .. loop through element to find index 
    .HasClass('Selected');  

    $(this).removeClass('Selected'); 
}) 
1

比較元素嘗試:

value === element 

==是矯頑比較。

===是明確的比較。

要獲得使用jQuery元素的位置,從其他人閱讀awnsers;)

1

根據記錄,現在是「爲()」函數:

element.is(value)