आप jQuery वस्तुओं की तुलना कैसे करेंगे?


101

इसलिए मैं यह पता लगाने की कोशिश कर रहा हूं कि दो jQuery वस्तुओं की तुलना कैसे करें, यह देखने के लिए कि मूल तत्व पृष्ठ का शरीर है या नहीं।

यहाँ मेरे पास क्या है:

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

मुझे पता है कि यह गलत है, लेकिन अगर कोई भी यह समझता है कि मुझे क्या मिल रहा है, तो क्या वे मुझे ऐसा करने के सही तरीके की ओर इशारा कर सकते हैं?


2
var $parent = $(this).parent(), $body = $('body'); var theSame = $parent.is($body); api.jquery.com/is/#is-jQuery-object
विक्टर

1
। $ (this) .parent () है ($ ( 'शरीर')); // या $ ('बॉडी') के अलावा किसी भी चीज के लिए जांच करें। stackoverflow.com/a/6986013/112100
Omu

जवाबों:


158

आपको कच्चे डोम तत्वों की तुलना करने की आवश्यकता है, जैसे:

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

या

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

1
यदि jQuery ऑब्जेक्ट किसी एकल DOM तत्व से मेल खाता है तो यह केवल समानता सुनिश्चित करेगा। यदि कई मैच थे तो आपको हर एक की तुलना करने के लिए किसी प्रकार के लूप की आवश्यकता होगी।
जिमी क्युद्रा

1
@ जिमी, हाँ, लेकिन यह ओपी आवश्यकताओं के लिए पर्याप्त है, वह केवल यह जानना चाहता है "... अगर मूल तत्व शरीर है ..."
सीएमएस

2
को छोटा कर सकते हैं: यदि (यह। अपरेंटोड === डॉक्युमेंट.बॉडी);
एहिंड्स



18

लूपिंग की आवश्यकता नहीं है, एकल पहले नोड के परीक्षण की आवश्यकता नहीं है। यह सुनिश्चित करने के अलावा कि वे एक ही लंबाई के हैं और समान नोड्स को साझा करने के अलावा बहुत कुछ भी आवश्यक नहीं है। यहाँ एक छोटा कोड स्निपेट है। तुम भी अपने स्वयं के उपयोग के लिए एक jquery प्लगइन में परिवर्तित करना चाहते हो सकता है।

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 {}
});

क्या यह नहीं कहा जाएगा कि निम्न विभाग समान हैं? <div>abc</div> <div>def</div>
चार्ली श्लिसेर

नहीं, फ़िल्टर DOM तत्वों को पारित नहीं करेगा जो समान नहीं हैं।
tbranyen

2

मैं इन जवाबों पर अड़ गया और सोचने लगा कि कौन सा बेहतर था। यह सब आपकी जरूरतों पर निर्भर करता है लेकिन टाइप करना, पढ़ना और निष्पादित करना सबसे आसान है। यहां एक निर्णय लेने के लिए मैंने जो परफेक्ट टेस्टकेस बनाया है।

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


रॉ डोम एलिमेंट्स 2 मेरे लिए सबसे तेज़ रिपोर्ट करता है: हर दूसरे रिपोर्ट किए गए ब्राउज़र के लिए भी ऐसा ही दिखता है।
केली हॉचकिस

वास्तव में, यह पहले वाले के समान है लेकिन जावास्क्रिप्ट के मूल सरणी पार्सिंग का उपयोग करता है।
साल्केटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.