All'inizio sospetto che funzioni:
if ($('#element') == $('#element')) alert('hello');
Ma non è così. Come si verifica se gli elementi sono gli stessi?
Risposte:
A partire da jquery 1.6 ora puoi semplicemente fare:
$element1.is($element2)
Questo dovrebbe funzionare:
if ($(this)[0] === $(this)[0]) alert('hello');
così dovrebbe questo
if (openActivity[0] == $(this)[0]) alert('hello');
$.is
O semplicemente
if (openActivity[0] == this) alert('hello');
(senza una nuova istanza jQuery ;-)
Come qualcuno ha già detto, lo stesso elemento HTML avvolto in due momenti diversi genera due diverse istanze di jQuery, quindi non possono mai essere uguali.
Invece, gli elementi HTML inseriti nel wrapping possono essere confrontati in questo modo, poiché la posizione di memoria che occupano è la stessa se è lo stesso elemento HTML, quindi:
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 :)
I migliori saluti!
9 anni dopo, senza jQuery
Se due elementi sono lo stesso, due elementi devono avere lo stesso puntatore. Quindi,
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
Come Silky o Santi ha detto, un ID o una classe univoci sarebbe il modo più semplice per testare. Il motivo per cui le tue istruzioni if non funzionano come ti aspetteresti è perché stanno confrontando 2 oggetti e vedendo se sono lo stesso oggetto in memoria.
Poiché è sempre un nuovo oggetto creato da $ (this), non possono mai essere uguali tra loro. Ecco perché devi testare su una proprietà dell'oggetto. Potresti cavartela senza un ID / classe univoco se ogni elemento openActivity fosse garantito per avere contenuti diversi su cui potresti testare.