Saya menduga ini akan berhasil pada awalnya:
if ($('#element') == $('#element')) alert('hello');
Tapi ternyata tidak. Bagaimana seseorang menguji jika elemennya sama?
Jawaban:
Mulai jquery 1.6 Anda sekarang dapat melakukan:
$element1.is($element2)
Ini harus bekerja:
if ($(this)[0] === $(this)[0]) alert('hello');
begitu juga seharusnya ini
if (openActivity[0] == $(this)[0]) alert('hello');
$.is
Atau hanya
if (openActivity[0] == this) alert('hello');
(tanpa contoh jQuery baru ;-)
Seperti yang sudah dikatakan seseorang, elemen HTML yang sama yang dibungkus dalam dua momen berbeda menghasilkan dua contoh jQuery yang berbeda, jadi keduanya tidak akan pernah sama.
Sebaliknya, elemen HTML yang dibungkus dapat dibandingkan seperti itu, karena lokasi memori yang ditempati sama jika merupakan elemen HTML yang sama, jadi:
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 :)
Salam Hormat!
9 tahun kemudian, tanpa jQuery
Jika dua elemen sama, dua elemen harus memiliki penunjuk yang sama. Jadi,
document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false
Seperti yang dikatakan sutra atau Santi, ID atau kelas unik akan menjadi cara termudah untuk menguji. Alasan pernyataan if Anda tidak berfungsi seperti yang Anda harapkan adalah karena pernyataan tersebut membandingkan 2 objek dan melihat apakah keduanya adalah objek yang sama dalam memori.
Karena itu selalu merupakan objek baru yang dibuat oleh $ (this), mereka tidak pernah bisa sama satu sama lain. Itulah mengapa Anda harus menguji properti objek. Anda bisa lolos tanpa id / kelas unik jika setiap elemen openActivity dijamin memiliki konten berbeda yang dapat Anda uji.