jQuery 1.6'dan beri .is
'u kullanabilirsiniz.
var a = $('#foo');
var b = a;
sonra ...: Aşağıda yıldan uzun süre önce gelen cevap ...
var a = $('#foo');
var b = a;
if (a.is(b)) {
// the same object!
}
Eğer iki değişken aslında aynı nesne olup olmadığını görmek için, örneğin bir benzersiz kimliklerini kontrol edebilir. Her yeni jQuery nesnesi oluşturduğunuzda bir kimlik alır.
if ($.data(a) == $.data(b)) {
// the same object!
}
rağmen, aynı basit a === b
ile elde edilebilir, yukarıdaki kudreti en azından ne için test tam olarak ne sonraki geliştirici göstermektedir.
Her durumda, muhtemelen peşinde olduğunuz şey bu değil. Eğer iki farklı jQuery nesneler elemanlarının aynı kümesi içeren olmadığını kontrol etmek istese, bu kullanabilirsiniz:
$.fn.equals = function(compareTo) {
if (!compareTo || this.length != compareTo.length) {
return false;
}
for (var i = 0; i < this.length; ++i) {
if (this[i] !== compareTo[i]) {
return false;
}
}
return true;
};
Source
var a = $('p');
var b = $('p');
if (a.equals(b)) {
// same set
}
Bu çözüm, yalnızca tek bir eleman olduğunda [thephpdeveloper] (http://stackoverflow.com/questions/3176962/jquery-object-equality/3176971#3176971) tarafından verilene göre basitleştiriyor . JQuery nesnelerinin eşit kabul edilebileceği bir başka duyu, aynı seçici ve bağlama sahip olup olmadıklarıdır. Bu test etmek için yeterince kolay: 'A.selector === B.selector && A.context === B.context'. Çoğu zaman içerik her zaman aynı olacaktır, bu yüzden sadece seçiciyi düşünmeliyiz. – Casebash
@Casebash - true, ancak birkaç seçicinin aynı sonuç kümesine sahip olabileceğini düşünelim, örneğin: $ (': ilk') 've' $ ('*: ilk') ' – nickf
[Daha küçük çözüm - '$ kullanın (a), (b) alt sının '] (http://stackoverflow.com/q/2448362/9859). – rampion