Saya menduga ini akan berhasil pada awalnya:
if ($('#element') == $('#element')) alert('hello');
Tapi ternyata tidak. Bagaimana seseorang menguji jika elemennya sama?
javascript
jquery
Yunus
sumber
sumber
Ini harus bekerja:
if ($(this)[0] === $(this)[0]) alert('hello');
begitu juga seharusnya ini
if (openActivity[0] == $(this)[0]) alert('hello');
sumber
$.is
Atau hanya
if (openActivity[0] == this) alert('hello');
(tanpa contoh jQuery baru ;-)
sumber
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!
sumber
Saya akan menggunakan addClass () untuk menandai yang dibuka dan Anda dapat memeriksanya dengan mudah.
sumber
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
sumber
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.
sumber