Sospecho que esto funciona al principio:
if ($('#element') == $('#element')) alert('hello');
Pero no es así. ¿Cómo se prueba si los elementos son iguales?
javascript
jquery
Jonás
fuente
fuente
Esto debería funcionar:
if ($(this)[0] === $(this)[0]) alert('hello');
entonces debería esto
if (openActivity[0] == $(this)[0]) alert('hello');
fuente
$.is
O solo
if (openActivity[0] == this) alert('hello');
(sin una nueva instancia de jQuery ;-)
fuente
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!
fuente
Usaría addClass () para marcar lo abierto y puedes verificarlo fácilmente.
fuente
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
fuente
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.
fuente