Eu suspeito que isso funcione no início:
if ($('#element') == $('#element')) alert('hello');
Mas não é assim. Como testar se os elementos são iguais?
javascript
jquery
Jonah
fonte
fonte
Isso deve funcionar:
if ($(this)[0] === $(this)[0]) alert('hello');
então deveria
if (openActivity[0] == $(this)[0]) alert('hello');
fonte
$.is
Ou apenas
if (openActivity[0] == this) alert('hello');
(sem uma nova instância jQuery ;-)
fonte
Como alguém já disse, o mesmo elemento HTML envolto em dois momentos diferentes gera duas instâncias jQuery diferentes, portanto, elas nunca podem ser iguais.
Em vez disso, os elementos HTML agrupados podem ser comparados dessa forma, uma vez que o local da memória que ocupam é o mesmo se for o mesmo elemento HTML, portanto:
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 :)
Cumprimentos!
fonte
Eu usaria addClass () para marcar o aberto e você pode verificar isso facilmente.
fonte
9 anos depois, sem jQuery
Se dois elementos são iguais, dois elementos devem ter o mesmo ponteiro. Portanto,
document.body === document.body // true document.querySelector('div') === document.querySelector('div') // true document.createElement('div') === document.createElement('div') // false
fonte
Como Silky ou Santi disse, um ID ou classe única seria a maneira mais fácil de testar. A razão pela qual suas instruções if não funcionam como você esperava é porque estão comparando 2 objetos e vendo se eles são o mesmo objeto na memória.
Como é sempre um novo objeto sendo criado por $ (this), eles nunca podem ser iguais. É por isso que você deve testar em uma propriedade do objeto. Você poderia se safar sem uma id / classe exclusiva se cada elemento openActivity tivesse a garantia de ter um conteúdo diferente para teste.
fonte