2010-03-13 17 views
97

Dolayısıyla, ebeveyn öğesinin bir sayfanın gövdesi olup olmadığını görmek için iki jQuery nesnesini nasıl karşılaştıracağımı anlamaya çalışıyorum. jQuery nesnelerini nasıl karşılaştırırsınız?

if ($(this).parent() === $('body')) ... 

Bunun yanlış olduğunu biliyorum, ama herkes ben de alıyorum anlayan, onlar bunu yapmanın doğru yolu doğru beni noktası olabilir: burada

Elimde ne var?

+2

'var $ ana = $ (Bu) .parent(), $ gövde = $ ('vücut');' 'var thesame = $ parent.is ($ gövdesi);' http : //api.jquery.com/is/#is-jQuery-object – Victor

+1

$ (this) .parent(). is ($ ('body')); // veya jQuery nesnesi tek DOM öğesi eşleşti yalnızca eşitliği sağlayacak $ dışında başka hiçbir işlem ('body') http://stackoverflow.com/a/6986013/112100 – Omu

cevap

156

Sen ör .: ham DOM öğelerini karşılaştırmak gerekir

if ($(this).parent().get(0) === $('body').get(0)) 

veya

if ($(this).parent()[0] === $('body')[0]) 
+1

kontrol edin. Birden fazla eşleşme varsa, her birini karşılaştırmak için bir sıralama döngüsüne ihtiyacınız olacaktır. –

+1

@Jimmy, evet ama bu bilmeye "... üst öğe gövdesi ise ..." – CMS

+2

için kısaltmak Can sadece istediği, OP gereksinimleri için yeterlidir: if (this.parentNode === document.body); – ehynds

59

Neden:

if ($(this).parent().is("body")) { 
    ... 
} 

?

+0

Ya 'if ($ (this) .parent(). ($ ("body"))) ' – dieend

17

döngü tek bir birinci düğüm gerekli değildir test gerekli değildir. Aynı uzunlukta olduklarından ve aynı düğümleri paylaştıklarından başka hiçbir şey gerekmemektedir. İşte küçük bir kod snippet'i. Kendi kullanımınız için bunu bir jquery eklentisine bile dönüştürmek isteyebilirsiniz.

jQuery(function($) { 
    // Two separate jQuery references 
    var divs = $("div"); 
    var divs2 = $("div"); 

    // They are equal 
    if (divs.length == divs2.length && divs.length == divs.filter(divs2).length) {   

    // They are not 
    } else {} 
}); 
+0

Bu, aşağıdaki divların eşit olduğunu söylemez miydi? '

abc
' '
def
' –

+0

Resim filtre eşit değildir DOM öğelerini geçmek olmaz. – tbranyen

2

Bu cevaplara rastladım ve hangisinin daha iyi olduğunu merak ettim. Her şey sizin ihtiyaçlarınıza bağlıdır, ancak yazmanın en kolay yolu, okunması ve yürütülmesi en iyisidir. İşte bir karar vermek için yaptığım mükemmel bir test çantası.

http://jsperf.com/jquery-objects-comparison

+0

Raw DOM Elements 2 benim için en hızlı raporlama: rapor edilen her tarayıcı için de aynı şekilde görünüyor. –

+0

Tam olarak, ilk ile aynı ancak javascript'in yerel dizi ayrıştırma kullanır. – Salketer

İlgili konular