2012-02-09 14 views
5
(function ($) { 
    $.fn.test = function() { 
     console.log('works'); 
    }; 
})(jQuery); 

$(document).ready(function() { 
    var var1 = $().test(); // works 
    var var1 = $.test(); // error: $.test is not a function 
}); 

के साथ कस्टम फ़ंक्शन कॉल करें $.test() इस तरह कॉल करना संभव है?

उत्तर

3

आप आसानी से jQuery वस्तु ही

(function ($) { 
    $.test = function() { 
     console.log('works'); 
    }; 
})(jQuery); 

का विस्तार कर सकता है लेकिन ध्यान रखें कि इस समारोह jQuery.fn में उपलब्ध नहीं होगा हो (जो jQuery.prototype के बराबर होती है) और इसलिए, आप this के माध्यम से वहाँ में dom nodes उपयोग नहीं कर सकते, न तो आप चेन अन्य jQuery प्लगइन फ़ंक्शंस के बाद या उससे पहले विधि कर सकते हैं।

कारण $().test() काम करता है कि jQuery कन्स्ट्रक्टर फ़ंक्शन jQuery.fn (प्रोटोटाइप ..) से जुड़ा एक नया ऑब्जेक्ट बनाता है।

2

मुझे लगता है कि ऐसा इसलिए है क्योंकि jQuery ऑब्जेक्ट वास्तव में केवल init कन्स्ट्रक्टर है। मतलब है कि $ बस एक jQuery ऑब्जेक्ट के निर्माता का प्रतिनिधित्व करता है। इस प्रकार $() निष्पादित एक खाली jQuery ऑब्जेक्ट बनाता है, जिसे आप प्रोटोटाइप विधि test() से कॉल कर सकते हैं।

प्रोटोटाइप तक पहुंचने के लिए आप $.fn.test();

कर सकते हैं
संबंधित मुद्दे