2013-03-04 8 views
10

क्लिक करना:jQuery दो डीओएम ऑब्जेक्ट की तुलना करें? एक तत्व पर

$('.my_list').click(function(){ 
    var selected_object = $(this); 

    $('.my_list').each(function(){ 
     var current_object = $(this); 

     if(selected_object == current_object) alert('FOUND IT !'); 
    }); 
}); 

मैं क्यों नहीं पता है, लेकिन मैं चेतावनी संदेश नहीं मिलता है "आईटी पाया!"।

+0

=== उपयोग करने का प्रयास करें और देखें कि –

उत्तर

31

आप jQuery.is फ़ंक्शन का उपयोग कर सकते हैं:

चेक एक चयनकर्ता, तत्व, या jQuery वस्तु के खिलाफ तत्वों की वर्तमान मिलान किया सेट और यदि इन तत्वों दिए गए तर्कों से मेल खाता है की कम से कम एक सच लौट आते हैं।

if (selected_object.is(current_object)) { 
    ...  
} 

एक वैकल्पिक समाधान jQuery.get समारोह का उपयोग करने के कच्चे तत्वों मिलता है और का उपयोग कर उनकी तुलना करने के लिए है == या === ऑपरेटर:

if (selected_object.get(0) == current_object.get(0)) { 
    ... 
} 

jsFiddle demo

3

अच्छा प्रदान की जवाब नहीं है ... लेकिन यह समझना महत्वपूर्ण है, आप सीधे jQuery में चयनकर्ताओं की तुलना क्यों नहीं कर सकते हैं।

jQuery चयनकर्ता डेटा संरचनाएं लौटाते हैं जो संदर्भ समानता के अर्थ में कभी भी के बराबर नहीं होंगे। इसलिए इसे समझने का एकमात्र तरीका है jQuery ऑब्जेक्ट से डीओएम संदर्भ प्राप्त करना और डीओएम तत्वों की तुलना करना।

ऊपर के उदाहरण के लिए डोम संदर्भ का सबसे सरल तुलना होगा:

selected_object.[0] == current_object.[0] 
संबंधित मुद्दे