Ich würde vermuten, dass dies zunächst funktioniert:
if ($('#element') == $('#element')) alert('hello');
Aber das tut es nicht. Wie testet man, ob Elemente gleich sind?
Antworten:
Ab jquery 1.6 können Sie jetzt einfach Folgendes tun:
$element1.is($element2)
Das sollte funktionieren:
if ($(this)[0] === $(this)[0]) alert('hello');
so sollte das sein
if (openActivity[0] == $(this)[0]) alert('hello');
$.is
Oder nur
if (openActivity[0] == this) alert('hello');
(ohne neue jQuery-Instanz ;-)
Wie bereits jemand sagte, generiert dasselbe HTML-Element, das in zwei verschiedenen Momenten eingeschlossen ist, zwei verschiedene jQuery-Instanzen, sodass sie niemals gleich sein können.
Stattdessen können die umschlossenen HTML-Elemente auf diese Weise verglichen werden, da der von ihnen belegte Speicherplatz derselbe ist, wenn es sich um dasselbe HTML-Element handelt.
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 :)
Freundliche Grüße!
9 Jahre später ohne jQuery
Wenn zwei Elemente dasselbe sind, müssen zwei Elemente denselben Zeiger haben. So,
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
Wie seidig oder Santi sagte, wäre eine eindeutige ID oder Klasse der einfachste Weg, um zu testen. Der Grund dafür, dass Ihre if-Anweisungen nicht wie erwartet funktionieren, liegt darin, dass zwei Objekte verglichen werden und festgestellt wird, ob sie dasselbe Objekt im Speicher sind.
Da es sich immer um ein neues Objekt handelt, das von $ (this) erstellt wird, können sie sich niemals gleichen. Deshalb müssen Sie eine Eigenschaft des Objekts testen. Sie könnten ohne eindeutige ID / Klasse davonkommen, wenn für jedes openActivity-Element garantiert ein anderer Inhalt vorhanden wäre, gegen den Sie testen könnten.