मैं एक सरल प्रोटोटाइप बनाने की कोशिश कर रहा हूं जिसे मैं इस तरह से एक डीआईवी पर कॉल कर सकता हूं:
$("#mydiv").processHtml();
मैंने यही कोशिश की:
Object.prototype.processHtml = function() {
var html = this.html();
// call ajax....
}
लेकिन जावास्क्रिप्ट अपवाद के रूप में फेंकता है html()
एक विधि नहीं है। मैंने कोशिश की HTMLDivElement
के बजाय Object
लेकिन यह मदद नहीं की। किसी भी संकेत?
उत्तर:
उत्तर № 1 के लिए 1आप गलत प्रोटोटाइप को संशोधित कर रहे हैं - आप संशोधित करने की कोशिश कर रहे हैं Object
"प्रोटोटाइप है, लेकिन आपको jQuery के प्रोटोटाइप को संशोधित करना होगा क्योंकि वह है" एक jQuery वस्तुजावास्क्रिप्ट ऑब्जेक्ट नहीं है। इसलिए, त्रुटि, क्योंकि एक नियमित जावास्क्रिप्ट ऑब्जेक्ट doesn "t विधि है html
.
सभी jQuery के तरीकों से जुड़े होते हैं fn
jQuery वस्तु की संपत्ति क्योंकि fn
प्रॉपर्टी केवल प्रोटोटाइप के लिए एक उपनाम है:
jQuery.fn === jQuery.prototype
इस प्रकार, jQuery ऑब्जेक्ट के प्रोटोटाइप में एक विधि जोड़ने के लिए, आपको एक्सेस करना होगा fn
jQuery ऑब्जेक्ट की संपत्ति (प्रोटोटाइप), या तो:
jQuery.fn.processHtml = function() {
...
}
या $
:
$.fn.processHtml = function() {
...
}
यह फ़ंक्शन को प्रोटोटाइप में जोड़ देगा और jQuery ऑब्जेक्ट के सभी उदाहरणों में विधि साझा करेगा:
$(selector).processHtml();