2010-06-04 12 views
21

मैं हाल ही में एक पॉडकास्ट सुन रहा था जिसने $() का उपयोग कर jQuery() का उपयोग कर टिप्पणी की। यह कहा गया था कि प्रत्येक बार $() का उपयोग किया गया था एक नई वस्तु बनाई जाएगी और जब jQuery() का उपयोग किया गया था तो यह मामला नहीं था। मैंने चारों ओर google'd लेकिन इस विशिष्ट विषय पर कुछ भी नहीं मिला।

मुझे एहसास है कि यह एक सामान्य उदाहरण नहीं है, लेकिन निम्नलिखित कारण है कि मुझे इस प्रश्न के उत्तर में रूचि है।

मेरे पास एक पृष्ठ है जो उपयोगकर्ता पूरे दिन ब्राउज़र में लोड हो जाएगा (24 घंटे, या संभवतः लंबा) और jQuery के माध्यम से AJAX कॉल के परिणामस्वरूप प्रत्येक ~ 5 सेकंड में डीओएम के अपडेट अपडेट किए जाते हैं (AJAX कॉल भाग डीओएम को अपडेट करने के लिए अप्रासंगिक है - डीओएम को अपडेट एचटीएमएल की एक स्ट्रिंग का उपयोग करके किया जाता है और एक jQuery ऑब्जेक्ट पर कॉल .empty() और फिर .html()) पर किया जाता है।

यह सुनने के बाद से, मैं बाद में jQuery() कॉल करने के लिए $() कॉल के सभी बंद है, लेकिन मैं जानना चाहूंगा:
jQuery() एक बुरा व्यवहार का उपयोग कर बनाम $() का उपयोग कर रहा है? क्या दोनों के बीच एक नगण्य अंतर है? या यह वास्तव में बड़ी परियोजनाओं पर ध्यान देने योग्य है?

+0

मेरे बारे में एकमात्र बुरी बात यह है कि $() को खोजना मुश्किल है, इसलिए यदि आपको कभी भी स्कोप बदलने की ज़रूरत है तो यह मुश्किल होगा – Earlz

+0

$() का उपयोग करना इस तरह एक ऑब्जेक्ट बना देगा - ' $ ("# आइटम") एचटीएमएल ('यहाँ')। । $ ("# आइटम") slideUp(); '। इसके बजाय यदि आप एक ही तत्व का उपयोग कर रहे हैं तो आपको चेन कॉल या ऐसा कुछ करना चाहिए - 'var ele = $ ("# item"); ele.html ('यहाँ'); ele.slideUp(); ' –

+1

यह पॉडकास्ट क्या है इसलिए मुझे इससे बचने के लिए पता है। – Mark

उत्तर

21

नहीं, यह बुरा अभ्यास नहीं है, और इसमें कोई प्रदर्शन अंतर नहीं है।

$ और jQuery पहचानकर्ता एक ही कार्य उदाहरण का संदर्भ लें।
यह jQuery.js की अंतिम पंक्ति द्वारा किया जाता है:

window.jQuery = window.$ = jQuery; 
+0

@Nate केवल तभी 'jQuery' स्मृति में एक नई वस्तु बनाता है हर बार – Earlz

+1

मैं इस मिथक को बुलाता हूं, बस्टेड! http://dsc.discovery.com/tv/mythbusters/ – tvanfosson

4

नहीं - jQuery स्रोत कोड पर एक नज़र डालें। $ JQuery के लिए सिर्फ एक और नाम है - अंतिम पंक्ति यह कहता है कि सब:

window.jQuery = window.$ = jQuery; 

यहाँ खुद के लिए देखें: http://code.jquery.com/jquery-latest.js

+0

क्या होगा यदि '$ 'का उपयोग करने वाली अन्य लाइब्रेरी jQuery के बाद आती है? – Garrett

+0

फिर jQuery.noConflict का उपयोग करें - http://api.jquery.com/jQuery.noConflict/ –

12

jQuery() से अधिक $() उपयोग करने के साथ ही समस्या की संभावना है कि एक और Javascript फ़्रेमवर्क इसे इस्तेमाल करता है भी।

+3

... और इसके आसपास के तरीके हैं - कोई कॉन्फ्लिक्ट पर दस्तावेज़ देखें: http://api.jquery.com/ jQuery.noConflict/ – tvanfosson

+1

इसके अलावा, कई अन्य ढांचे इस संघर्ष से बचने के तरीकों (या कम से कम विचार) प्रदान करते हैं। – Kurucu

2

मेरे लिए, लक्ष्य अन्य पुस्तकालयों के साथ टकराव नामकरण से बचने के लिए है जो प्रोटोटाइप की तरह मुख्य वस्तु के रूप में $ का उपयोग करते हैं, यदि आप एक ही पृष्ठ पर दोनों पुस्तकालयों का उपयोग करना चाहते हैं, या आप नहीं जानते कि आपका कोड कहां होगा इस्तेमाल किया जा सकता है ...

0

जैसा कि पहले बताया गया है, केवल वास्तविक समस्या अन्य जेएस ढांचे के साथ संघर्ष में हो रही है, इसलिए मुझे लगता है कि यह अभी भी डॉलर के संकेत का उपयोग करने में सक्षम होने का सबसे आसान समाधान है, लेकिन कोई संघर्ष नहीं है और अपने कोड अधिक पोर्टेबल बनाने:

(function($) { /* some code that uses $ */ })(jQuery) 

http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Referencing_Magic_-_Shortcuts_for_jQuery

2

क्या आप वाकई $() बनाम jQuery() बना रहे हैं? हो सकता है कि अधिक महत्वपूर्ण बिंदु यह है कि प्रदर्शन करने के लिए प्रदर्शन हिट हैं, और कई नए जेएस कोडर अनावश्यक रूप से $() का उपयोग करते हैं जब सादा जेएस कर सकता है।

जब आपको ऐसा करने की आवश्यकता नहीं है तो jQuery ऑब्जेक्ट बनाने से बचने के लिए यह अच्छा अभ्यास है।

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

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