Sospecho que esto funciona al principio:
if ($('#element') == $('#element')) alert('hello');
Pero no es así. ¿Cómo se prueba si los elementos son iguales?
Respuestas:
A partir de jquery 1.6 ahora puede simplemente hacer:
$element1.is($element2)
Esto debería funcionar:
if ($(this)[0] === $(this)[0]) alert('hello');
entonces debería esto
if (openActivity[0] == $(this)[0]) alert('hello');
$.is
O solo
if (openActivity[0] == this) alert('hello');
(sin una nueva instancia de jQuery ;-)
Como alguien ya dijo, el mismo elemento HTML envuelto en dos momentos diferentes genera dos instancias jQuery diferentes, por lo que nunca pueden ser iguales.
En cambio, los elementos HTML envueltos se pueden comparar de esa manera, ya que la ubicación de memoria que ocupan es la misma si es el mismo elemento HTML, entonces:
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 :)
¡Atentamente!
9 años después, sin jQuery
Si dos elementos son el mismo, dos elementos deben tener el mismo puntero. Así,
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
Como dijo Silky o Santi, una identificación o clase única sería la forma más fácil de probar. La razón por la que sus declaraciones if no funcionan como esperaría es porque está comparando 2 objetos y viendo si son el mismo objeto en la memoria.
Dado que $ (this) siempre crea un nuevo objeto, nunca pueden igualarse entre sí. Es por eso que debe probar una propiedad del objeto. Podría salirse con la suya sin una identificación / clase única si cada elemento de openActivity tuviera la garantía de tener un contenido diferente con el que podría probar.