Проверьте, являются ли два элемента одинаковыми

Я бы заподозрил, что это сработает сначала:

if ($('#element') == $('#element')) alert('hello');

Но это не так. Как проверить, являются ли элементы одинаковыми?

Ответ 1

Как и в jquery 1.6, вы можете просто сделать:

$element1.is($element2)

Ответ 2

Это должно работать:

if ($(this)[0] === $(this)[0]) alert('hello');

так что это

if (openActivity[0] == $(this)[0]) alert('hello');

Ответ 3

Или просто

if (openActivity[0] == this) alert('hello');

(без нового экземпляра jQuery; -)

Ответ 4

Как уже сказал кто-то, тот же 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 :)

С уважением!

Ответ 5

Я бы использовал addClass() для маркировки открытого, и вы можете легко это проверить.

Ответ 6

Как и шелковистый или Санти, уникальным идентификатором или классом был бы самый простой способ тестирования. Причина, по которой ваши операторы if не работают, как вы ожидали, состоит в том, что она сравнивает 2 объекта и видит, являются ли они одним и тем же объектом в памяти.

Поскольку всегда создается новый объект, созданный с помощью $(this), они никогда не смогут сравниться друг с другом. Вот почему вам нужно проверить свойство объекта. Вы могли бы уйти без уникального id/class, если бы у каждого элемента openActivity не было другого контента, с которым вы могли бы протестировать.