Je soupçonnerais que cela fonctionne au début:
if ($('#element') == $('#element')) alert('hello');
Mais ce n'est pas le cas. Comment tester si les éléments sont les mêmes?
Réponses:
À partir de jquery 1.6, vous pouvez maintenant simplement faire:
$element1.is($element2)
Cela devrait fonctionner:
if ($(this)[0] === $(this)[0]) alert('hello');
ainsi devrait-il
if (openActivity[0] == $(this)[0]) alert('hello');
$.is
Ou juste
if (openActivity[0] == this) alert('hello');
(sans 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 encapsulés peuvent être comparés de cette façon, car l'emplacement de mémoire qu'ils occupent est le même s'il s'agit du 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!
9 ans plus tard, sans jQuery
Si deux éléments sont identiques, deux éléments doivent avoir le même pointeur. Donc,
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
Comme le dit Silky ou Santi, un identifiant ou une classe unique serait le moyen le plus simple de tester. La raison pour laquelle vos instructions if ne fonctionnent pas comme prévu est que cela compare 2 objets et voit s'ils sont le même objet en mémoire.
Comme il s'agit toujours d'un nouvel objet créé par $ (this), ils ne peuvent jamais s'égaliser. C'est pourquoi vous devez tester sur une propriété de l'objet. Vous pourriez vous en tirer sans identifiant / classe unique si chaque élément openActivity avait la garantie d'avoir un contenu différent que vous pourriez tester.