2011-06-23 21 views
11

मुझे jQuery में पता है, $(callback)jQuery(callback) जैसा है जो $(document).ready() जैसा ही प्रभाव डालता है।

समारोह इस तरह का मतलब कैसे के बारे में

jQuery(function($) { 

}); 

कुछ एक मुझे समझा सकते हैं कि करता है?

यह क्या करता है?

इस और $(callback) के बीच क्या अंतर है ??

इस और $(function()) के बीच क्या अंतर है ??

उत्तर

8
jQuery(function($) { 

}); 

इन तीनों का सबसे सुरक्षित संस्करण है। यह $ स्थानीय चर बनाता है और इस प्रकार संभवतः $ प्रतीक का उपयोग करने वाले किसी अन्य चर के साथ संघर्षों से बचाता है।

मुझे लगता है कि इसे हाल ही में भी जोड़ा गया था, इसे पहले देखना याद नहीं है।

ये फ़ंक्शन सभी एक ही काम करते हैं - डीओएम तैयार होने पर कुछ कोड निष्पादित करें। $ (दस्तावेज़) .ready (function() {}) मूल है, और यह अंतर्निहित जावास्क्रिप्ट एपीआई से मेल खाता है।

"$" और "jQuery" जो एक तर्क के रूप में कार्य को स्वीकार करते हैं, इस तरह के एक सामान्य निर्माण को दोहराने से बचने के लिए शॉर्टकट के रूप में बनाए गए थे। एक ऐसा फ़ंक्शन स्वीकार करना जो $ 1 को अपने पहले तर्क के रूप में स्वीकार करता है, एक और वाक्यविन्यास चीनी है - अब आपको इसे बंद करने की आवश्यकता के बिना बंद होने की सुविधा मिलती है।

+0

मुझे आपका जवाब पसंद है (यदि यह सही है), काफी स्पष्ट स्पष्टीकरण :) – Leem

2

तो मुझे इस पर सही किया गया था और यदि आप पहली टिप्पणी पढ़ते हैं तो यह कुछ संदर्भ देता है।

jQuery(function() { 
    // Document Ready 
}); 


(function($) { 
    // Now with more closure! 
})(jQuery); 

मैं 100% निश्चित नहीं हूं लेकिन मुझे लगता है कि यह सिर्फ बंदरगाह वस्तु को बंद कर देता है। मैं Google पर कुछ खुदाई करूँगा यह देखने के लिए कि क्या मैं सही हूं या गलत हूं और तदनुसार अपडेट करूँगा।

संपादित करें:

मैं काफी सही हूँ, लेकिन यहाँ यह उनकी वेबसाइट से सीधे है:

http://docs.jquery.com/Plugins/Authoring

"मेरे भयानक डॉलर संकेत है कि मैं जानता हूँ कि और प्यार है यह अभी भी वहाँ हालांकि, यह सुनिश्चित करने के लिए कि आपकी प्लगइन अन्य पुस्तकालयों के साथ टकराव नहीं करती है जो डॉलर के संकेत का उपयोग कर सकती हैं, यह एक स्वयं निष्पादन समारोह (बंद) के लिए jQuery को पास करने का सबसे अच्छा अभ्यास है जो इसे डॉलर के चिह्न पर मानचित्रित करता है, इसलिए यह नहीं हो सकता इसके निष्पादन के दायरे में एक और पुस्तकालय द्वारा अधिलेखित। "

+1

-1 के बराबर है एक आशुलिपि है। ऐसा करने का एक बहुत अच्छा कारण है: यदि आपने jQuery $ सहित पहले '' '' को पुनर्स्थापित करने के लिए '$ .noConflict();' का उपयोग किया है, तो आप अपने फ़ंक्शन में '$' उपलब्ध कर सकते हैं (तैयार कॉलबैक के रूप में jQuery ऑब्जेक्ट प्राप्त होता है पहला तर्क) किसी अन्य अज्ञात फ़ंक्शन में सबकुछ लपेटे बिना। – ThiefMaster

+0

क्या आप दस्तावेज़ में ऐसा करेंगे?काफी उचित, मैं एक ही समय में पोस्ट और अपना खुद का सामान्य ज्ञान अपडेट करूंगा! स्पष्टीकरण के लिए धन्यवाद। – Seth

+1

निर्भर करता है - यदि आप लिखना चाहते हैं तो एक दस्तावेज़ है। पहले से ही यह समझ में आता है। यदि दस्तावेज़ से पहले/बाद में jQuery का उपयोग कर कोई अन्य कोड है। पहले से ही मैं निश्चित रूप से '(फ़ंक्शन ($) {...}) (jQuery) के साथ जाऊंगा;' – ThiefMaster

0

पहले, jQuery()$(document).ready()

$() के समान नहीं है jQuery()

और के लिए एक शॉर्टकट ...

$(function(){ ...}); है $(document).ready(function(){ ... });

इस प्रकार के लिए एक शॉर्टकट है:

jQuery(function(){ ... }) 

लेकिन जैसे

$(document).ready(function({ ... }); 

ही काम करेंगी ...

jQuery('#foo').css("background-color", "#f00"); 

रूप

$(document).ready('#foo').css("background-color", "#f00"); 

तो एक ही ढंग से काम नहीं होता ...

jQuery() नहीं एक ही रूप में $(document).ready()

+2

उम ... मुझे पूरा यकीन है कि अगर आप अंदर एक समारोह पास करते हैं तो यह है? –

+0

हाँ यदि कोई फ़ंक्शन पास हो गया है, तो अनाम फ़ंक्शन शॉर्टकट का उपयोग करके, दोनों एक ही प्रदर्शन करेंगे। लेकिन कह रहा है कि 'jQuery() '' $ (दस्तावेज़) जैसा ही है। पहले से ही एक झूठा बयान है। – Mutt

11
  • $(function()) एक वाक्यविन्यास त्रुटि है।
  • $() एक खाली jQuery ऑब्जेक्ट बनाता है।
  • $(document).ready(function() { ... }) दिया फ़ंक्शन निष्पादित DOM तैयार
  • $(function() { ... }) है एक ही बात के लिए एक शॉर्टकट है
  • jQuery(function($) { ... }) तो, भी, लेकिन यह भी $ समारोह के अंदर उपलब्ध बनाता है कोई बात नहीं क्या यह करने के लिए बाहर सेट है।
1

जब आप मुख्य jQuery कारखाने फ़ंक्शन को कॉल करें (या तो jQuery(<something>) या आम शॉर्टकट $(<something>) के रूप में) यह <something> के प्रकार के आधार क्या करना है का फैसला किया।

यदि आप <something> के रूप में एक स्ट्रिंग पास करते हैं तो यह मानता है कि यह एक चयनकर्ता विनिर्देश है और चयनकर्ता से मेल खाने वाले तत्वों की एक jQuery सूची लौटाएगा।

यदि आप एक jQuery ऑब्जेक्ट (तत्वों की एक सूची का प्रतिनिधित्व करते हैं, यानी पिछली कॉल से पिछली कॉल से लौटाई गई वस्तु) को पास करते हैं तो यह केवल उस ऑब्जेक्ट को वापस कर देगा (अनिवार्य रूप से यह एक गैर-ऑपरेशन है)।

यदि आप इसे एक डोम तत्व पास करते हैं तो यह केवल उस तत्व वाली एक jQuery सूची लौटाएगा (ताकि आप उस तत्व के लिए jQuery विधियां लागू कर सकें)। $(document).ready() के साथ यह हो रहा है - आप कारखाने को DOM तत्व "दस्तावेज़" फ़ंक्शन करते हैं, यह उस तत्व का प्रतिनिधित्व करने वाली एक jQuery ऑब्जेक्ट देता है, और आप उस ऑब्जेक्ट की तैयार() विधि का उपयोग किसी ईवेंट की हैंडलिंग फ़ंक्शन को सभी के लिए तैयार करने के लिए करते हैं इस मामले में सूची में डीओएम तत्व (केवल एक, document)।

आप इसे एक समारोह पार कर लेते हैं, यह सिर्फ के लिए "इस चलाने जब सब कुछ आप ऐसा करने के लिए तैयार है", तो $(function() { ... }); अपनी पहली लाइन के लिए $(document).ready(function() { ... });

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