2010-10-20 10 views
7

कुछ jquery प्लगइन विजेट का उपयोग _create विधि का उपयोग करते हैं, जबकि अन्य _init विधि का उपयोग करते हैं, क्या कोई दोनों के बीच मतभेदों को समझा सकता है?jquery विजेट, _create या _init

विजेट का विस्तार करने या सीधे jquery.fn का विस्तार करने के लिए बेहतर होने पर कोई मार्गदर्शन भी?

उत्तर

4

विजेट को विस्तारित करने के लिए नकारात्मक ($ .fn के विपरीत) यह है कि आप jquery-ui पर निर्भरता बनाते हैं जो विजेट "वर्ग" को परिभाषित करता है। यह निर्भरता आपके प्लगइन के उपयोगकर्ताओं के लिए महंगा हो सकती है जो jquery-ui का भी उपयोग नहीं करते हैं।

जहां तक ​​_create बनाम _init जाता है, मुझे पूरा यकीन है कि _init पहले आया था और फिर हाल ही में संशोधन में उन्होंने _create की शुरुआत की और उनका समर्थन किया। मैं इसके बारे में गलत हो सकता हूं, लेकिन मेरा मानना ​​है कि _init अभी भी समर्थित है। यदि ऐसा है तो दोनों के बीच कोई अंतर नहीं होना चाहिए।

+0

विजेट पर अच्छा बिंदु। क्या आपके पास विजेट का कोई प्रतिस्थापन है यदि मैं jqueryui पर अतिरिक्त निर्भरता पेश नहीं करना चाहता हूं? –

+2

आप बस विजेट कोड को निकाल सकते हैं और इसे अपनी .js फ़ाइल में शामिल कर सकते हैं। Jqueryui के बजाय jquery में विजेट को ले जाने के बारे में बात थी लेकिन मुझे नहीं पता कि यह एक विशिष्ट रिलीज के लिए निर्धारित है या नहीं। –

+4

_init और _create के बीच एक अलग है। _create केवल एक बार कहा जाता है। _init को @fudgey – jsgoupil

18
jQuery UI Developer Guide से

:

एक बार तत्व बन जाता है, विजेट नाम जहां पहले पैरामीटर एक स्ट्रिंग _init() विधि कॉल करेंगे नहीं है करने के लिए अन्य सभी कॉल; अगर विकल्प पारित कर रहे हैं, .option() विधि विधि _init() से पहले बुलाया जाएगा

+0

से उल्लेख किए गए कई बार कहा जाएगा, लिंक अब टोस्ट है। –

+1

[एपीआई के लिए इस लिंक को आजमाएं] (https://api.jqueryui.com/jquery.widget/#method-_init) या [यह ब्लॉग पोस्ट] (http://www.erichynds.com/blog/tips- के लिए विकसित-jQuery-ui-विगेट्स) – Mottie

3

एक विजेट तीन चरणों में है:

+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 
| Phase | Name   | jQuery Method | Description           | 
+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 
|  1 | Creation  | _create  | First time the widget is applied to an element, it is called.        | 
|  2 | Initialization | _int   | The _init method is called after _create when the widget is first applied to its elements. | 
|  3 | Destruction | destroy  | The widget's destroy method is used to detach a widget from an element.     | 
+-------+----------------+---------------+--------------------------------------------------------------------------------------------+ 

नोट: विधि के नाम एक अंडरस्कोर के साथ शुरू सम्मेलन द्वारा निजी होने के लिए हैं।


तो वहाँ _create और _init बीच एक अंतर है। एक का निर्माण सृजन के लिए किया जाता है और दूसरा प्रारंभिकरण के लिए उपयोग किया जाता है। हर बार जब आप विजेट को बिना तर्क के या विकल्पों के साथ कॉल करते हैं, तो यह अप्रत्यक्ष रूप से _init विधि को कॉल करेगा। इसलिए, इसका उपयोग (पुन: प्रारंभ करने) को रीसेट करने या विभिन्न विकल्पों को पास करने के लिए किया जा सकता है।

प्रत्येक चरण here के बारे में अधिक जानकारी।