आप केवल addProduct
और तरीकों कि एकल jQuery वस्तु पर सुविधा के लिए चाहते हैं, तो क्या तुम ठीक से काम करेंगे मिल गया है; लेकिन addProduct
और विधियों के अस्तित्व को संरक्षित रखने के लिए आपको उस jQuery ऑब्जेक्ट का संदर्भ रखना होगा/केवल इसका उपयोग करना होगा।
हालांकि, इन addProduct
और विधियां उस विशेष jQuery ऑब्जेक्ट के लिए अद्वितीय हैं; आपके द्वारा बनाए गए किसी भी अन्य jQuery ऑब्जेक्ट्स पर विधियां मौजूद नहीं होंगी;
var productList = $.extend($('ul.products'), {
addProduct: function(productData) {
// add a new li item
},
deleteProduct: function(productId) {
// delete li with id
}
});
// Using this particular jQuery object (productList) will work fine.
productList.addProduct();
productList.removeProduct();
// However, addProduct() does not exist on new jQuery objects, even if they use
// the same selector.
$('ul.products').addProduct(); // error; [object Object] has no method 'addProduct'
सबसे अच्छा तरीका ऐसा करते हैं करने के लिए जाने-बैक-टू-मूल बातें करने के लिए और अलग addProduct
और काम करता है, जो एक jQuery वस्तु को स्वीकार परिभाषित किया जाएगा। यदि आप इन कार्यों को प्रतिबंधित करना चाहते हैं तो वे केवल ul.products
चयनकर्ता पर काम करते हैं, आप कर सकते हैं;
function addProduct(obj) {
obj = obj.filter('ul.products');
// do something with `obj` (its a jQuery object)
}
यह दृष्टिकोण के रूप में यह jQuery.fn
एपीआई संगत रहता है की सिफारिश की जाएगी; अन्यथा आप addProduct
और removeProduct
से कुछjQuery.fn
उदाहरणों पर नहीं बल्कि अन्य लोगों को, या दूसरों में उनका उपयोग अनावश्यक जोड़ देंगे। इस दृष्टिकोण के साथ हालांकि addProduct
और removeProduct
हमेशा वहां रहते हैं, लेकिन अगर वे उनका उपयोग नहीं करना चाहते हैं तो किसी भी तरह से न आएं।
ऐतिहासिक नोट्स
इस उत्तर मूल रूप से नवंबर 2011 में, जब jQuery 1.7 जारी किया गया था में लिखा गया था। तब से एपीआई काफी बदल गया है। उपर्युक्त उत्तर jQuery के वर्तमान 2.0.0 संस्करण के लिए प्रासंगिक है।
पहले 1.9, एक छोटे से अधिक इस्तेमाल किया विधि jQuery.sub
मौजूद थे कहा जाता है, जो संबंधित तुम क्या करने की कोशिश कर रहे हैं क्या (लेकिन आप मदद नहीं करेगा जब तक आप अपने दृष्टिकोण को बदल) है। यह एक नया jQuery कन्स्ट्रक्टर बनाता है, ताकि आप कर सकें;
var newjQuery = jQuery.sub();
newjQuery.fn.addProduct = function() {
// blah blah
};
newjQuery.fn.deleteProduct = function() {
// blah blah
};
var foo = newjQuery('ul.products');
foo.deleteProduct();
foo.addProduct();
var bar = jQuery('ul.products');
bar.deleteProduct(); // error
bar.addProduct(); // error
हालांकि सावधान रहो, $
विधि उर्फ वर्ष jQuery
वस्तु संदर्भ होता है, बल्कि newjQuery
उदाहरण से।
jQuery.sub
को jQuery से 1.9 में हटा दिया गया था।अब यह as a plugin उपलब्ध है।
क्या मैं पूछ सकता हूं कि इस पद्धति का अंतिम उद्देश्य क्या है? –
मैं इसे विधि श्रृंखला में सक्षम होना चाहता हूं, उदाहरण के लिए '$ ('ul.products')। FadeIn()। AddProduct (डेटा);'। साथ ही, यह अन्य jQuery विधियों को कैसे बुलाया जाता है इसके साथ संगत रहता है। –