2009-12-09 8 views
15

JQuery का उपयोग:

कभी-कभी, मैं variable.val() कर सकता हूं और यह काम करता है। कभी-कभी, मुझे $(variable).val() का उपयोग करने की आवश्यकता है।

मैं परीक्षण और त्रुटि के बिना चुनाव करने में सक्षम होना चाहता हूं।

क्या किसी को पता है कि JQuery का उपयोग करते समय $() के साथ ऑब्जेक्ट को कब लपेटना है?

उत्तर

13

$() के साथ एक DOM ऑब्जेक्ट लपेटकर इसे एक jQuery लपेटा सेट एलिमेंट में परिवर्तित कर देगा। इस तरह आप इसके साथ jQuery विधियों को कॉल करने में सक्षम होना चाहिए (वैल(), attr(), शो(), छुपाएं(), serialize())।

यदि आपको शुद्ध जावास्क्रिप्ट गुण प्राप्त करने या सेट करने की आवश्यकता है, तो आपको इसे लपेटना नहीं चाहिए।

+2

... जब तक वेरिएबल पहले से ही एक JQuery ऑब्जेक्ट नहीं है जो jquery selector का परिणाम था :) शायद यह वही मामला था जब कॉल() सीधे कॉल किया गया था। – Slavo

4

क्या किसी को पता है कि JQuery का उपयोग करते समय किसी ऑब्जेक्ट को $() के साथ लपेटना कब है?

बिंदु पर: जब obj instanceof jQuery झूठी वापसी करता है। यह अक्सर this और विधि तर्क के मामले में होता है (जब तक कि विधि को दस्तावेज नहीं किया जाता है ताकि तर्क एक jQuery ऑब्जेक्ट होना चाहिए)।

तो यदि आपके पास this है और आप jQuery फ़ंक्शन चाहते हैं, तो आपको इसे लपेटने की आवश्यकता है। जैसे

function() { 
    $this = $(this); 
    $this.val(); 
} 

इसके अलावा, अगर आप एक समारोह जिसका तर्क जरूरी jQuery तत्वों नहीं हैं और आपको यह सुनिश्चित करना है कि वे चाहते हैं, तो आप पहली बार लपेट की जरूरत है। जैसे

function(e) { 
    e = $(e); 
    e.val(); 
} 

यह एक jQuery तत्व को फिर से लपेटने के लिए कोई नुकसान नहीं पहुंचाता है।

0

jQuery सीखने की शुरुआत में, अक्सर यह पता लगाने के लिए परीक्षण और त्रुटि होती है जब कोई चर पहले ही लपेटा जाता है या नहीं। उदाहरण के लिए, ईवेंट फ़ंक्शंस में, यह-चर एक jQuery-ऑब्जेक्ट नहीं है। साथ ही, मुझे विश्वास है कि एक jQuery-ऑब्जेक्ट को दोबारा लपेटना खतरनाक नहीं है।

मुझे नहीं लगता कि आपको ऐसा कुछ करने की ज़रूरत है, क्योंकि आप भविष्य में और अधिक jQuery-code लिखते समय जल्द ही पर्याप्त रूप से पर्याप्त रूप से पता लगाएंगे।

0

यदि आपके पास इवेंट हैंडलर है तो वैल प्राप्त करने के लिए() आपको इसे लपेटने की आवश्यकता होगी, क्योंकि elem नीचे लपेटा नहीं गया है, लेकिन आप नीचे दिए गए उदाहरण में elem.value कर सकते हैं।

$('#someid').bind('click', function(e) { 
    var elem = e.currentTarget; 
} 

यदि आपको चयनकर्ता का उपयोग करने से तत्व नहीं मिला है तो आपको शायद इसे लपेटने की आवश्यकता होगी।

आप केवल एक उपयोगिता समारोह कर सकते हैं जो एक लपेटा तत्व वापस कर देगा, अगर आप वास्तव में इसे चाहते हैं, तो यह हमेशा लपेटा जाता है।

बस इसे किसी भी तत्व में पास करें, और फिर यह जांच कर सकता है कि यह एक jquery वस्तु है और यदि इसे लपेट नहीं है, लेकिन यह हमेशा लपेटा संस्करण वापस कर देगा।

0

हमेशा $(something)का उपयोग कर

6

सीधे शब्दों में $(variable) डाल (यदि आप something पर jQuery तरीकों का उपयोग करने की योजना) में कोई बुराई नहीं है कि DOM तत्व लेता है और एक jQuery वस्तु बनाता है। किसी भी समय जब आप किसी jQuery ऑब्जेक्ट की बजाय किसी DOM ऑब्जेक्ट के साथ समाप्त होते हैं तो इसका उपयोग करने की आवश्यकता होती है।

सबसे अधिक संभावना कारणों से आप मिल चाहते हैं एक डोम वस्तु होगा:

  1. घटनाक्रम - किसी भी घटना आप बाँध (क्लिक) की तरह jQuery में में, this चर और सभी घटना तर्क डोम वस्तुओं का संदर्भ लेंगे (jQuery वस्तुओं नहीं)।
  2. गैर-jQuery जावास्क्रिप्ट - यदि आपके पास अपने कोड के कुछ भाग हैं जो अभी भी document.getElementById का उपयोग करते हैं (जैसे कि आपके पास कुछ विरासत जावास्क्रिप्ट है या किसी तृतीय पक्ष लाइब्रेरी का संदर्भ दे रहा है जो किसी कारण से jQuery प्लगइन नहीं है) तो ये डॉम ऑब्जेक्ट्स होंगे और लपेटने की जरूरत है।

वहाँ हालांकि कोई नुकसान नहीं कोई है जो अनुमान हो सकता है कि यह कैसे आप इसका इस्तेमाल से एक डोम वस्तु है करने के लिए कहानियो से परे, बुला $(variable) अगर variable पहले से ही एक jQuery वस्तु है में है, और आप हमेशा डोम वस्तु को वापस प्राप्त कर सकते हैं $(variable)[0] पर कॉल करके।

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