İki öğenin aynı olup olmadığını test edin


87

İlk başta bunun işe yarayacağından şüphelenirdim:

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

Ama öyle değil. Öğelerin aynı olup olmadığı nasıl test edilir?

Yanıtlar:


139

Jquery 1.6'dan itibaren artık şunları yapabilirsiniz:

$element1.is($element2)

7
Bu, Jquery'nin tüm yeni sürümleri için en iyi yanıttır.
Chris Jaynes

Bir diğeri ben aynı soruyu aramanızı ve bu cevabı bulma sonunda her zaman upvote isterdim
freefaller

75

Bu çalışmalı:

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

bu da olmalı

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

3
İlk örneğinizi doğru şekilde yansıtmak için ikinci örneğiniz === değil == olmamalı mı?
Prusprus

3
Bu yanıt, jquery'nin eski sürümlerinde doğru olabilir, ancak çoğu insan muhtemelen destekleyen bir sürüm kullanıyor$.is
Chris Jaynes


12

Birinin daha önce söylediği gibi, iki farklı an içine sarılmış aynı HTML öğesi iki farklı jQuery örneği oluşturur, bu nedenle asla eşit olamazlar.

Bunun yerine, sarılmış HTML öğeleri bu şekilde karşılaştırılabilir, çünkü işgal ettikleri bellek konumu aynı HTML öğesi ise aynıdır, bu nedenle:

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 :)

Saygılarımla!


5

Açılanları işaretlemek için addClass () kullanırım ve bunu kolayca kontrol edebilirsiniz.


3

9 yıl sonra, jQuery olmadan

İki öğe aynı ise, iki öğenin aynı işaretçiye sahip olması gerekir. Böylece,

document.body === document.body // true
document.querySelector('div') === document.querySelector('div') // true
document.createElement('div') === document.createElement('div') // false

0

İpeksi veya Santi'nin dediği gibi, benzersiz bir kimlik veya sınıf test etmenin en kolay yolu olacaktır. If ifadelerinizin beklediğiniz gibi çalışmamasının nedeni, 2 nesneyi karşılaştırması ve bellekte aynı nesne olup olmadıklarını görmesidir.

$ (This) tarafından yaratılan her zaman yeni bir nesne olduğundan, birbirlerine asla eşit olamazlar. Bu yüzden nesnenin bir özelliğini test etmelisiniz. Her openActivity öğesinin test edebileceğiniz farklı içeriğe sahip olması garantiliyse, benzersiz bir kimlik / sınıf olmadan kurtulabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.