2011-08-06 10 views
6

इन दोनों एक ही चीज हैं, दस्तावेज़ तैयार कहने का अर्थात तरीके:jQuery में तैयार दस्तावेज़ कहने के विभिन्न तरीके?

$(function() { 
    // 
}); 

और

$(function($) { 
    // 
})(jQuery); 

या दोनों के बीच एक अंतर है, यदि ऐसा है तो फिर जब मैं जो इस्तेमाल करना चाहिए?

+2

पिछले एक प्रयोग किया जाता है । –

+0

आप http://stackoverflow.com/questions/1388043/different-forms-of-document-ready – coreyward

+0

@Briedis देख सकते हैं तो प्लगइन में दूसरे का उपयोग करना अन्य पुस्तकालयों के साथ संघर्ष की संभावना को कम करेगा? – Sergio

उत्तर

9

पहला वाला .ready() के लिए शॉर्टकट है।

दूसरा एक अमान्य है क्योंकि आप एक गैर-कॉल करने योग्य ऑब्जेक्ट को कॉल करने का प्रयास कर रहे हैं।

// v--------no $ at the beginning 
    (function($) { 

     // simply a new lexical environment with a 
     //  local $ parameter pointing to jQuery 

    })(jQuery); 

... हालांकि यह डोम तैयार के साथ कोई संबंध नहीं है:

आप शायद इस का मतलब है।

jQuery(function($) { 

    // DOM ready, and creates a local $ parameter pointing to jQuery 

}); 
1

वे दोनों ही नहीं हैं:

अपना पहला उदाहरण पर एक बदलाव है कि दो को जोड़ती है।

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

(function($) { 
    // 
})(jQuery); 
0

यह एक गलत है:

$(function($) { 
    // 
})(jQuery); 

आप $(...) करने के लिए एक समारोह गुजर रहे हैं, तो परिणाम बुला। हालांकि, $(...) का परिणाम एक jQuery ऑब्जेक्ट है, जो एक फ़ंक्शन नहीं है। आप इसे बेहतर इस तरह से देख सकते हैं:

$(

    function($) { 
     // 
    } 

) 

(jQuery); 

आम तौर पर, जो सभी एक दूसरे के बराबर हैं document.ready के तीन संस्करण, देखते हैं: जब एक साथ विभिन्न जे एस पुस्तकालयों के साथ काम

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

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

$().ready(function() {...}); 
+0

'$()' jQuery (> = 1.4, आईआईआरसी) के हाल के संस्करणों में काम नहीं करेगा, क्योंकि वे संस्करण दस्तावेज़ तत्व का चयन करने के बजाय इसे खाली चयन के रूप में देखते हैं। यह सबसे अच्छा बचा है। – lonesomeday

+1

@lonesomeday: आप शायद सही हैं कि यह सबसे अच्छा बचा है (क्योंकि यह आधिकारिक रूप से समर्थित नहीं है), लेकिन यह काम करता है क्योंकि jQuery के '.ready()' फ़ंक्शन वर्तमान में आपके द्वारा पास किए गए 'दस्तावेज़' को अनदेखा करता है। '$ .fn.ready (...' और '$ ('MooTools') तैयार (func ... 'भी काम करता है, लेकिन फिर असमर्थित है। – user113716

+0

@patrick dw: मुझे यकीन नहीं है कि वे असमर्थित हैं 'यहां तक ​​कि दस्तावेज़ों का कहना है कि उनका उपयोग किया जा सकता है (हालांकि' अनुशंसित नहीं 'के साथ जोड़ा गया है) – pimvdb

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