2011-11-14 8 views
9

मैं दो चयनकर्ताओं तुलना करने के लिए है और मैं सोच रहा था क्यों इस फ़ायरबग में झूठी वापसी करता है ... और कैसे मैं दो चयनकर्ताओंमैं दो चयनकर्ताओं की तुलना में jquery का उपयोग कैसे करूं?

$('.product-info:last') == $('.product-info:last') 

तुलना करते हैं यह मैं

var previous = $('.product-info:visible'); 
    if(previous == $('.product-info:last')){ 
     return false; 
    } 
+0

आप चयनकर्ता तुलना करने के लिए कोशिश कर रहे हैं? jquery ऑब्जेक्ट यह लौटता है? – Patricia

+0

[jQuery ऑब्जेक्ट समानता] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3176962/jquery-object-equality) – Blazemonger

+0

यह तुलना करता है कि क्या यह वही चयनकर्ता – Trace

उत्तर

13

कारण $('.product-info:last') !== $('.product-info:last') है क्योंकि jQuery उन में से हर एक के लिए एक नई वस्तु बनाने, वे एक ही jQuery वस्तु नहीं हैं।

यह देखने के लिए कि क्या तत्व समान हैं, is का उपयोग करें।

previous.is('.product-info:last') 
+0

सावधानी: [jquery.jquery.com/is/) का मेरा पठन यह है कि यह जांच नहीं करता है कि दो चयनकर्ता ** समान ** हैं, केवल वे ** ओवरलैप * *। तो उदाहरण के लिए यह भी काम करेगा: 'past.is (': last')' –

5

क्या करना है है प्रयास करें:

$('.product-info:last').get(0) == $('.product-info:last').get(0) 
+0

मुझे लगता है कि ".get (0)" बेहतर होगा, क्योंकि इससे आपको डोम नोड मिलेगा और एक jQuery ऑब्जेक्ट नहीं होगा। – Pointy

+0

मैं हमेशा उन दो –

+0

के बीच उलझन में हूं केवल तभी काम करता है जब चयनकर्ता में बिल्कुल एक DOM तत्व होता है। यदि चयनकर्ता एक से अधिक तत्वों का चयन करता है, तो यह परीक्षण अपूर्ण होगा। – Blazemonger

2

प्रयास करें निम्नलिखित:

var previous = $('.product-info:visible'); 
if (previous.is('.product-info:last')) { 
    return false; 
} 
संबंधित मुद्दे