2010-02-06 17 views
60

हम काम पर म्यूटूल से jQuery पर स्विच कर रहे हैं। मेरे पास एक सहकर्मी है जिसने मुझे jQuery पद्धति का उपयोग करते समय उपसर्ग के रूप में $ का उपयोग कभी नहीं किया (अगर मैं उसे सही ढंग से समझता हूं)। उन्होंने कहा कि इसके बजाय, अधिक उचित या सुरक्षित तरीका (मैंने वास्तव में उसका पालन नहीं किया) jQuery. का उपयोग करना था।

तो $.plugin(), jQuery.plugin() के बजाय उदाहरण के लिए उपयोग किया जाना चाहिए।

ऐसा क्यों होगा? वह $/jQuery के साथ क्या भेद कर रहा है? क्या मुझे अपने एक्सेसर के रूप में डॉलर के चिह्न के बारे में भूल जाना चाहिए? केवल कुछ परिस्थितियों में?

+0

[jQuery और MooTools Conflict] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2810399/jquery-and-mootools-conflict) –

+0

संभावित डुप्लिकेट [इन jQuery तैयार कार्यों के बीच अंतर क्या है?] (http://stackoverflow.com/questions/2662778/what-is-the-difference-between-these-jquery-ready-functions) –

उत्तर

74

उस मामले क्यों हो सकता है? क्या उसका $/jQuery भेद सही है?

क्योंकि लगभग हर जावास्क्रिप्ट लाइब्रेरी $ नामक फ़ंक्शन को परिभाषित करती है। जब आपके पास एक दस्तावेज़ में कई पुस्तकालय होते हैं, तो विवाद दिखाई दे सकते हैं। यदि आप सुनिश्चित हैं कि jQuery है और हमेशा उस फ़ंक्शन को परिभाषित करने वाली एकमात्र स्क्रिप्ट होगी, तो मेरे पास $ का उपयोग करने के खिलाफ कुछ भी नहीं होगा।

jQuery विवादों को सुलझाने के लिए एक अच्छा समाधान परिभाषित करता है: jQuery.noConflict। इस फ़ंक्शन का उपयोग करके आप अपना नाम परिभाषित कर सकते हैं, जिससे jQuery पहुंच योग्य होगा, उदा।

var $jq = jQuery.noConflict(true); 

इस कार्यप्रणाली को कॉल $ और jQuery चर के लिए पिछले मान बहाल जब jQuery आरंभ से पहले मौजूद का परिणाम देगा। मुझे याद नहीं है कि क्या कोई अन्य पुस्तकालय नाम विवादों को हल करने का प्रयास करता है।

आप $ jQuery के बजाय का उपयोग हर समय आपको एक अलग, निजी गुंजाइश है कि एक स्व-प्रेरक फ़ंक्शन का उपयोग करके $ की परिभाषा रखती में अपने कोड चला सकते हैं करना चाहते हैं।

(function($){ 
    // your code goes here 
    $("body").append("<p>Hello World!</p>"); 
})(jQuery); // or even jQuery.noConflict() 
+10

बस शब्दावली पर नाइटपिक करने के लिए: जो आपने प्रस्तुत किया वह बंद नहीं है, लेकिन केवल एक स्वयं -विवरण समारोह। एक बंद होता है जब आप किसी अन्य फ़ंक्शन के अंदर फ़ंक्शन को परिभाषित करते हैं और इसे वापस कर देते हैं। –

+0

मेरी गलती। मुझे नहीं पता कि मैं अपना जवाब लिखते समय क्या सोच रहा था। पाठ बदल दिया। आईआईएफई के लिए – Rafael

+2

+1 (तुरंत-अभिव्यक्ति समारोह अभिव्यक्ति)। आईएमओ 'नो कॉन्फ्लिक्ट' का उपयोग करना बेहतर है क्योंकि दायरा स्पष्ट रूप से परिभाषित किया गया है। – ach

10

$ jQuery पर एलियास है और, सिद्धांत रूप में, एक और शामिल पुस्तकालय या स्क्रिप्ट में कुछ और जो भ्रम या बुरा भी हो सकती है पर एलियास किया जा सकता है। यदि आप केवल jquery का उपयोग कर रहे हैं, तो $ का उपयोग करना ठीक होना चाहिए।

3

प्रोटोटाइप जैसे अन्य पुस्तकालयों के साथ संघर्ष से बचने के लिए यह एक ही $ का उपयोग करता है।

मैं $ पसंद करते हैं, और वहाँ इसे का उपयोग करता है, तो आप केवल सर्वर का उपयोग कर रहे हैं कोई समस्या नहीं है।

3

अन्य पुस्तकालयों के साथ संघर्ष के आसपास अन्य उत्तर के अलावा, एक चर नाम हमेशा चर वर्णन करना चाहिए। jQuery$ से एक चर के लिए एक और अधिक वर्णनात्मक नाम है।

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