2010-08-27 20 views
14
var username = $("#username"), 
       password = $("#password"), 
       allFields = $([]).add(username).add(password); 

सभी फ़ील्ड क्या है? $ ([]) क्या है?

जावास्क्रिप्ट/jQuery के लिए नौसिखिया होने के नाते, मैंने पहले कभी इस $ ([]) नोटेशन को कभी नहीं देखा है और मुझे इसके संबंधित तरीकों में दिलचस्पी है।

यह देखते हुए कि "$ ([])", यह खोजना मुश्किल है। और जावास्क्रिप्ट में सरणी की एक Google खोज (अनुमान लगाया जाता है कि यह चीज़ किसी प्रकार की सरणी है) सामान्य सरणी उत्पन्न करती है जिसे मैं परिचित हूं।

तो $ ([]) क्या है? क्या कोई मुझे कुछ दस्तावेज के लिए इंगित कर सकता है? मुझे इस अजीब चीज का उपयोग करने के तरीके सीखने में दिलचस्पी है।

+0

मुझे विश्वास है कि 'allFields = $ ([उपयोगकर्ता नाम, पासवर्ड]) 'एक eqiuvalent statment होगा।अगर आपको jQuery द्वारा विस्तारित सरणी की आवश्यकता नहीं है, तो बस 'allFields = [उपयोगकर्ता नाम, पासवर्ड]' करेंगे। –

+0

@Chris दोस्तों: बंद करें, लेकिन इसे '$ ([उपयोगकर्ता नाम [0], पासवर्ड [0]] होना चाहिए) दुर्भाग्यवश। –

उत्तर

12

jQuery फ़ंक्शन डोम नोड्स की एक सरणी स्वीकार करता है।

$([document.body]) उदाहरण के लिए जो उस सरणी में पारित सभी DOM तत्वों को लपेटकर एक jQuery ऑब्जेक्ट वापस कर देगा। हालांकि, चूंकि आपके उदाहरण में शुरू करने के लिए कोई DOM ऑब्जेक्ट नहीं है और यह केवल एक खाली सरणी है, वहां खाली सरणी को पास करने की आवश्यकता नहीं है।

किसी भी तर्क के बिना jQuery फ़ंक्शन को कॉल करना एक खाली सेट देता है। jQuery डॉक्स से लिया,

एक खाली सेट

jQuery 1.4 के रूप में लौटने के बाद कोई तर्क एक खाली jQuery सेट रिटर्न के साथ jQuery() विधि बुला। JQuery के पिछले संस्करणों में, यह दस्तावेज़ नोड युक्त एक सेट लौटाएगा।

तो, अपने उदाहरण में एक ही काम करेगा यदि आप इसके बजाय

$().add(username).add(password); 

बुलाया था के रूप में अन्य उत्तर का उल्लेख किया है और डॉक्स का कहना है, गुजर एक खाली सरणी वी 1.4 से पहले आवश्यक था।

+0

+1 अच्छा जवाब। मैं इसे नए व्यवहार के बारे में भूल गया था कि '$()' एक खाली वस्तु लौटाता है। – user113716

+0

धन्यवाद, यही वह है जिसे मैं ढूंढ रहा था। उत्कृष्ट जवाब –

+1

@ टीना - अगर आपको लगता है कि अनुराग ने स्पष्ट स्पष्टीकरण दिया है तो इस जवाब को "स्वीकार करें" याद रखें। आप इसके बाईं ओर बड़े चेकमार्क पर क्लिक करके स्वीकार करते हैं। : ओ) – user113716

6

[] यह एक खाली सरणी है। $() के साथ इसे लपेटकर इसे jQuery के कार्यों के साथ अधिभारित करता है।

जावास्क्रिप्ट में आप एक सरणी इस तरह से बना सकते हैं:

var foo = []; 
+0

इसे jQuery कार्यों के साथ ओवरचर्ज करता है? आपके उदाहरण को देखते हुए, यदि आपने '$ (foo)' किया है, तो 'foo' का आपका संदर्भ अभी भी एक सामान्य ऐरे का संदर्भ दे रहा है। – user113716

+0

सख्त होने के कारण, $ (foo) का परिणाम अधिक चार्ज किया गया है, foo "सामान्य" रहता है। – fcingolani

+1

"ओवरचार्ज" एक डॉलर साइन फ़ंक्शन के लिए एक दुर्भाग्यपूर्ण वर्णन है। –

5

यह एक खाली सरणी एक jQuery वस्तु के निर्माण में पारित किया जा रहा है। संभवतः कुछ शुरू करने के लिए।

आवश्यक नहीं होना चाहिए, कम से कम jQuery के नवीनतम संस्करणों में नहीं। , http://jsfiddle.net/MAzLN/

वर्क्स ठीक के रूप में alert() वस्तु में एक ही तत्व से पता चलता:

यहाँ सरणी के बिना एक उदाहरण है।

jQuery length संपत्ति को 0 पर प्रारंभ करता है जब ऑब्जेक्ट बनाया जाता है, इसलिए मुझे यकीन नहीं है कि उद्देश्य क्या है, जब तक कि यह अतीत में आवश्यक न हो।

+0

वाह, बहुत अच्छा लिंक! धन्यवाद! –

3

मेरा मानना ​​है कि यह एक खाली jQuery संग्रह ऑब्जेक्ट बनाता है।

+0

डैनियल के उत्तर में जोड़ने के लिए, jQuery के पुराने संस्करणों के साथ आप केवल $() के साथ एक खाली jQuery ऑब्जेक्ट नहीं बना सका ताकि एक खाली सरणी गुजरना आवश्यक हो। – CalebD

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