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?

Jawaban:


139

Mulai jquery 1.6 Anda sekarang dapat melakukan:

$element1.is($element2)

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');

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


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!


5

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


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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.