Я бы заподозрил, что это сработает сначала:
if ($('#element') == $('#element')) alert('hello');
Но это не так. Как проверить, являются ли элементы одинаковыми?
Я бы заподозрил, что это сработает сначала:
if ($('#element') == $('#element')) alert('hello');
Но это не так. Как проверить, являются ли элементы одинаковыми?
Как и в jquery 1.6, вы можете просто сделать:
$element1.is($element2)
Это должно работать:
if ($(this)[0] === $(this)[0]) alert('hello');
так что это
if (openActivity[0] == $(this)[0]) alert('hello');
Или просто
if (openActivity[0] == this) alert('hello');
(без нового экземпляра jQuery; -)
Как уже сказал кто-то, тот же HTML-элемент, завернутый в два разных момента, генерирует два разных экземпляра jQuery, поэтому они никогда не могут быть равными.
Вместо этого обернутые HTML-элементы могут сравниваться таким образом, так как их расположение в памяти одинаково, если оно является одним и тем же элементом HTML, поэтому:
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 :)
С уважением!
Я бы использовал addClass() для маркировки открытого, и вы можете легко это проверить.
Как и шелковистый или Санти, уникальным идентификатором или классом был бы самый простой способ тестирования. Причина, по которой ваши операторы if не работают, как вы ожидали, состоит в том, что она сравнивает 2 объекта и видит, являются ли они одним и тем же объектом в памяти.
Поскольку всегда создается новый объект, созданный с помощью $(this), они никогда не смогут сравниться друг с другом. Вот почему вам нужно проверить свойство объекта. Вы могли бы уйти без уникального id/class, если бы у каждого элемента openActivity не было другого контента, с которым вы могли бы протестировать.