Uji apakah dua elemen sama

87

Saya menduga ini akan berhasil pada awalnya:

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

Tapi ternyata tidak. Bagaimana seseorang menguji jika elemennya sama?

Yunus
sumber

Jawaban:

139

Mulai jquery 1.6 Anda sekarang dapat melakukan:

$element1.is($element2)
chrisarton.dll
sumber
7
Ini adalah jawaban terbaik untuk semua versi terbaru Jquery.
Chris Jaynes
Satu lagi yang saya harap bisa saya beri suara positif untuk setiap kali saya akhirnya Googling pertanyaan yang sama dan menemukan jawaban ini
freefaller
75

Ini harus bekerja:

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

begitu juga seharusnya ini

if (openActivity[0] == $(this)[0]) alert('hello');
epascarello.dll
sumber
3
bukankah seharusnya contoh kedua Anda menjadi === dan bukan ==, untuk mencerminkan contoh pertama Anda dengan benar?
Prusprus
3
Jawaban ini mungkin benar di versi jquery yang lebih lama, tetapi kebanyakan orang mungkin menggunakan versi yang mendukung $.is
Chris Jaynes
14

Atau hanya

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

(tanpa contoh jQuery baru ;-)

Francesco Terenzani
sumber
12

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!

yodabar
sumber
5

Saya akan menggunakan addClass () untuk menandai yang dibuka dan Anda dapat memeriksanya dengan mudah.

Santi
sumber
3

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
allenhwkim.dll
sumber
0

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.

Menepuk
sumber