Testez si deux éléments sont identiques

Je soupçonnerais que cela fonctionne d'abord:

if ($('#element') == $('#element')) alert('hello'); 

Mais ce n'est pas le cas. Comment testez-vous si les éléments sont identiques?

À partir de jquery 1.6, vous pouvez maintenant simplement faire:

 $element1.is($element2) 

Cela devrait fonctionner:

 if ($(this)[0] === $(this)[0]) alert('hello'); 

Alors devrait-il

 if (openActivity[0] == $(this)[0]) alert('hello'); 

Ou juste

 if (openActivity[0] == this) alert('hello'); 

(Sans une nouvelle instance jQuery 😉

Comme quelqu'un l'a déjà dit, le même élément HTML enveloppé dans deux moments différents génère deux instances jQuery différentes, donc elles ne peuvent jamais être égales.

Au lieu de cela, les éléments HTML enveloppés peuvent être comparés de cette façon, puisque l'emplacement mémoire qu'ils occupent est le même si c'est le même élément HTML, donc:

 var LIs = $('#myUL LI'); var $match = $('#myUL').find('LI:first'); alert(LIs.eq(0) === $match); // false alert(LIs.get(0) === $match.get(0)) // TRUE! yeah :) 

Meilleures salutations!

J'utiliserais addClass () pour marquer l'ouverture et vous pouvez vérifier cela facilement.

Comme Silky ou Santi a déclaré, un identifiant ou une classe unique serait le moyen le plus simple de tester. La raison pour laquelle vos déclarations if ne fonctionnent pas comme vous vous attendez, c'est parce que c'est comparer 2 objets et voir s'ils sont le même objet en mémoire.

Puisqu'il s'agit toujours d'un nouvel objet créé par $ (ce), ils ne peuvent jamais s'accorder. C'est pourquoi vous devez tester sur une propriété de l'objet. Vous pourriez vous séparer sans une ID / classe unique si chaque élément openActivity devait avoir un contenu différent sur lequel vous pouvez tester.