2011-12-22 11 views
31

मैं आपकी क्या अपेक्षाएं हैं:की तुलना करें 'e.target' एक jQuery वस्तु को

(clickedObject === someDiv) //returns true or false 

मैं क्या करने की कोशिश की

($(e.target) === $('.selector')); //returns a false negative. 

मेरे वैकल्पिक हल

($(e.target).attr('class') === $('.selector').attr('class')); //works as intended, not so clean though. 

सही तरीका क्या है ऑब्जेक्ट की तुलना करने के लिए मैंने डीओएम में किसी ऑब्जेक्ट पर क्लिक किया था?

उत्तर

32

यह जांचने के लिए कि e.target इस वर्ग में आप hasClass फ़ंक्शन का उपयोग कर सकते हैं।

if ($(e.target).hasClass("selector")) 

या, यदि आप वास्तव में, वस्तुओं की तुलना ध्यान दें कि jQuery चयनकर्ताओं आइटम का संग्रह वापस जाने के लिए चाहते हैं, इसलिए मुझे लगता है कि आप

if (e.target === $('.selector')[0]) 
+0

मैं इस सवाल का जवाब चाहते, क्योंकि यह वर्णन करता है क्यों मेरे दृष्टिकोण काम नहीं किया। jQuery आइटम का संग्रह देता है। – dubbelj

+0

@dubbelj - ठंडा - खुशी हुई यह मदद की :) –

29

आप निकट पहुंच गए हैं चाहता हूँ। बजाय .is() का उपयोग करें:

if($(e.target).is('.selector')) { 
    // Your code 
} 

चाल यहाँ है कि आप एक jQuery वस्तु में e.target लपेट यह सब उपयोगी jQuery तरीकों के उपयोग की अनुमति है। हालांकि .hasClass() क्या कोड करता है के रूप में एक छोटे से स्पष्ट है

if($(e.target).hasClass('selector')) { 
    // Your code 
} 

या तो विधि काम करता है, और:

तुम सिर्फ दिखाई दे रही है कि क्या e.target एक निश्चित वर्ग है, .is() के स्थान पर .hasClass() का उपयोग करके देखें आप तत्व मिलान करने के लिए है कि घटना $(this) उपयोग कर सकते हैं आप से जुड़ा हुआ है चाहते हैं .is()

+0

+1 बस एक ही चीज़ टाइप कर रहा था। –

+2

+1 - बूम - 'अच्छा उत्तर' बैज :) –

+2

@ 32 बिटकिड मैं क्षमा चाहता हूं ;-) मैंने ऐसा कई बार किया है! – Bojangles

0

का उपयोग कर की तुलना में तेजी है, या आप जो तत्व शुरू हो रहा घटना का उपयोग $(event.target) खोजना चाहते हैं।

नीचे दोनों का एक उदाहरण है।

http://jsfiddle.net/Phunky/TbJef/

जब तक आप घटना प्रतिनिधिमंडल का उपयोग कर रहे ये वही यद्यपि और अगर वहाँ एक ही तत्व हो जाएगा।

0

स्पष्ट रूप से .is() फ़ंक्शन का उपयोग करना सबसे अच्छा समाधान है।

आप अपने आप को लगता है इस तरह के तुलना कर रहे हैं, तो जाँच करने के लिए कोशिश करता है, तो यह इस तरह एम्बेडेड jQuery तंत्र उपयोग करना संभव है:

$(element).on("click", ".selector", function() { 
    alert("clicked"); 
}); 

.on() विधि में दूसरा तर्क लक्ष्य चयनकर्ता है। इस निर्माण का उपयोग करते समय (और पढ़ें: http://api.jquery.com/on/#direct-and-delegated-events) कोई अतिरिक्त तुलना करने की आवश्यकता नहीं होगी।

संबंधित मुद्दे