2010-08-17 7 views
1

Je rencontre un problème avec les éléments correspondants dans jQuery. Fondamentalement, j'ai des éléments de la liste, et onclick Je veux comparer deux éléments pour trouver sa position dans la liste, à savoir.Comment comparer deux éléments sans ID ou classe 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 est dans la portée et cela devrait fonctionner tout (ou je le pense). La seule raison pour laquelle je peux voir que cela pourrait ne pas fonctionner est que le navigateur voit chaque list-item comme étant le même, parce que son innerHTML est le même et n'a pas id ou class.

Existe-t-il une autre façon d'obtenir la position d'un élément de liste dans une liste?

+1

Votre code fonctionne pour moi aussi longtemps que vous ajoutez la parenthèse fermante qui vous manque. Essayez-le: http://jsfiddle.net/83hcP/ – user113716

+0

Eh bien c'est une bonne chose que j'ai découvert à propos de index(), c'est bien. Mais il s'avère que ce n'était pas vraiment mon problème, c'était le #someID. C'était mon code simplifié, et je n'obtenais pas l'élément correct pour boucler. – Tom

Répondre

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

index

0

Si pour une raison .index de $() ne fonctionne pas pour vous ...

une raison quelconque vous ne pouvez pas ajouter un attribut ou une classe à l'objet en boucle puis à travers la liste des articles pour le trouver?

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

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

Pour comparer les éléments essayer:

value === element 

== est comparaison coercitive.

=== est une comparaison explicite.

Pour obtenir la position d'un élément avec jQuery, lisez awnsers des autres;)

1

Pour mémoire, maintenant il est le "est()" fonction:

element.is(value) 
Questions connexes