2011-03-11 14 views
7

मेरा jQuery कोड विभाजित फ़ाइल 2 फाइलों से विभाजित है।2 फाइलों में कोड के बीच जेएस फ़ंक्शंस साझा करना

फ़ाइल में से एक में, मैं एक समारोह

function something(input){ 
    //does something 
} 

इस समारोह केवल काम करता है जब फोन करने वाले लाइन एक ही फाइल में है बुला परिभाषित करते हैं। लेकिन मुझे इसे दोनों फाइलों से कॉल करने की ज़रूरत है।

यदि मैं फ़ंक्शन को दूसरी फ़ाइल में स्विच करता हूं, तो मुझे एक ही समस्या मिलती है। उसी फ़ाइल में कोड इसे पढ़ सकता है, लेकिन दूसरी फ़ाइल में कोड नहीं।

उत्तर

9

प्लेस $(document).ready(function() { }); के बाहर अपने कार्यों के लिए उन्हें वैश्विक विस्तार देने के लिए। इसके भीतर रखी गई किसी भी चीज को बाहर से नहीं पहुंचा जा सकता है।

फिर आप अपने कार्यों को समाहित करने के लिए नामस्थान का उपयोग कर देख सकते हैं। यह वैश्विक नामस्थान के अव्यवस्था से बचने में मदद करता है।

4

आपको नेमस्पेस ऑब्जेक्ट बनाने की आवश्यकता है, जो आपकी फ़ाइलों के बीच साझा की जाती है।

fileA.js

window.mynamespace = window.mynamespace || {}; 

mynamespace.something = function(input) { 
    // do something 
}; 

fileB.js

window.mynamespace = window.mynamespace || {}; 

mynamespace.something(); 
+0

मैं JQuery का उपयोग कर रहा हूं और मेरी प्रत्येक फाइल इस तरह से शुरू होती है। मैं नेमस्पेस कहां रखूं? दस्तावेज़ के बाहर या अंदर तैयार? '$ (दस्तावेज़) .ready (फ़ंक्शन() { \t });' – sami

+0

@sami: उस ऑब्जेक्ट को सेट करना या प्राप्त करना आपकी पहली फाइलों में होने वाली पहली चीज़ होनी चाहिए। इसके अलावा, यह एक सरलीकृत संस्करण है। आप इस समस्या के लिए बहुत अधिक जटिल समाधान बना सकते हैं। – jAndy

+0

मैं मानता हूं कि यह सबसे अच्छा समाधान है। जावास्क्रिप्ट में निर्यात/आयात के साथ कुछ प्रयोग भी थे ([इस पृष्ठ को देखें] (http://hatayservices.com/books/Javascript/JavaScriptStatements.html#stmtexport)) लेकिन वैश्विक ऑब्जेक्ट (जैसे विंडो) पर themethods/ऑब्जेक्ट को सहेजना सबसे अच्छा तरीका है ... – Tokimon

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