Спочатку я підозрюю, що це спрацює:
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');
$.is
Або просто
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 :)
З найкращими побажаннями!
9 років потому, без jQuery
Якщо два елементи однакові, два елементи повинні мати однаковий покажчик. Таким чином,
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
Як шовковистий або Санті сказав, унікальний ідентифікатор або клас буде найпростішим способом перевірки. Причина того, що ваші оператори if працюють не так, як ви очікували, полягає в тому, що вони порівнюють 2 об'єкти та перевіряють, чи це однаковий об'єкт у пам'яті.
Оскільки це завжди новий об’єкт, який створюється $ (this), вони ніколи не можуть зрівнятися між собою. Ось чому вам доведеться тестувати властивість об’єкта. Ви могли б уникнути жодного унікального ідентифікатора / класу, якби кожен елемент openActivity був гарантовано мати різний вміст, який ви можете перевірити.