2012-08-28 21 views
31

मैं गतिशील रूप से एक नया div ("टेक्स्टबॉक्स" वर्ग और आईडी के साथ), और इसके अंदर के कुछ अन्य तत्वों के साथ, और बाद में मेरे कोड में मैं क्लिक करता हूं कि div क्लिक ईवेंट पर आदि दिखाए तत्व क्लिक किया, तो जैसे:jquery e.target.hasClass काम नहीं कर रहा है

$('#textbox_'+i).bind('click', function(event){ 
    alert(event.target.className); 
} 

यह ठीक है, और यह मेरे दिखाया गया वर्गों में से एक के रूप में textbox दे देंगे। लेकिन event.target.hasClass() काम नहीं कर रहा है। तो, जब मैं निम्नलिखित करते हैं, कुछ नहीं होता:

$('#textbox_'+i).bind('click', function(event){ 
    if(event.target.hasClass('textbox')) { alert('got it!'); } 
} 

मैं इसे कुछ अलग अलग तरीकों की कोशिश की और मुझे ऐसा लगता है कि event.target.hasClass() सिर्फ काम नहीं करता। क्या घटनाओं से निपटने का कोई और तरीका है या क्या मैं कुछ गलत कर रहा हूं?

उत्तर

69

आप मानक डीओएम तत्व पर एक jQuery विधि, hasClass() का उपयोग करने का प्रयास कर रहे हैं। तुम बहुत की तरह, एक jQuery वस्तु को सादा जे एस DOM एलीमेंट e.target बदलने की आवश्यकता:

$(event.target).hasClass('textbox') 

और आप के साथ अंत:

$('#textbox_'+i).on('click', function(event){ 
    if($(event.target).hasClass('textbox')) alert('got it!'); 
}); 

सूचना on() के उपयोग, click के समुचित समापन फ़ंक्शन, और यदि आप केवल एक साधारण अलर्ट निष्पादित कर रहे हैं तो आपको अपने कथन में घुंघराले ब्रैकेट की आवश्यकता नहीं है।

+0

वाह! ठीक है कि यह आसान था! शायद यह एक छोटा सा विषय है, लेकिन $ (event.target) और event.target के बीच क्या अंतर है? हैस्कास के साथ पूर्व कार्य, लेकिन जब मैं चेतावनी देने की कोशिश नहीं करता .className। – user961627

+5

हैस्क्लास एक jQuery फ़ंक्शन है, .className सादा जावास्क्रिप्ट – anderssonola

+2

पहला वाला jQuery में लपेटा गया है, इसलिए यह एक jQuery ऑब्जेक्ट है और इसका उपयोग jQuery विधियों के साथ किया जा सकता है। दूसरा एक सादा जावास्क्रिप्ट ऑब्जेक्ट 'ईवेंट' कार्यों में लौटाया गया है और इसका उपयोग सादे जावास्क्रिप्ट विधियों के साथ किया जा सकता है लेकिन jQuery विधियों के साथ नहीं किया जा सकता है। – adeneo

6

आप बिना उपयोग jQuery अपने जे एस DOM एलीमेंट सादे का उपयोग कर रखना चाहते हैं:

event.target.classList.contains('textbox')