2010-08-17 49 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)