2011-03-26 9 views
5

एक jQuery प्लगइन बनाते समय, $.fn फ़ंक्शन में क्या वापस किया जाना चाहिए? क्या यह return this या return $(this) है? वेबसाइटों में से कुछ मैं जब पूर्व का उपयोग खोज में आए, जबकि अन्य वेबसाइटों का उपयोग उत्तरार्द्ध:

क्या है अंतर, और क्या पसंद किया जाता है?

उत्तर

6

सीधे $.fn (jQuery कन्स्ट्रक्टर का प्रोटोटाइप) पर रहने वाले फ़ंक्शन के अंदर, this उस jQuery संग्रह उदाहरण को संदर्भित करता है जिस पर फ़ंक्शन चल रहा है। रिटर्निंग this उचित है। इसे $() में लपेटकर बस आपके कोड में अनावश्यक वजन जोड़ता है।

Context section of jQuery plugin authoring guidelines देखें।

+1

हाँ, वह था कि मैं क्या भी सोचा पुष्टि करने के लिए धन्यवाद। – pimvdb

1

this वह jQuery ऑब्जेक्ट है जिस पर आपका फ़ंक्शन लागू किया गया है; $(this) ऑब्जेक्ट की एक उथली प्रतिलिपि है (एक और jQuery ऑब्जेक्ट, जो एक ही डोम तत्वों का संदर्भ देता है या जो मूल वस्तुएं आयोजित की जाती हैं)। आम तौर पर, this बेहतर होना चाहिए क्योंकि 1) jQuery ऑब्जेक्ट की प्रतिलिपि बनाना संचालन की एक गैर-मात्रात्मक मात्रा लेता है, 2) आप आमतौर पर jQuery ऑब्जेक्ट के गुणों को नहीं बदलते हैं।

अब अगर आप कर परिवर्तन गुण तो दो अलग ढंग से व्यवहार:

var foo = $('#id'); 
var bar = $(foo); 
foo.baz = 1; 
bar.baz; // undefined 

और $(this) लौटने कि मामले में और अधिक समझ कर सकता है। इसलिए जब आप एक jQuery वस्तु के लिए एक तत्व जोड़ते हैं तो उसे मूल संशोधित नहीं करता

var next = $(this); 
// add parameter to next 
return next; 

: उदाहरण के लिए, jQuery के अपने add समारोह इस आंतरिक रूप से की तरह कुछ करता

var foo = $('html'); 
var bar = foo.add('body'); 
bar.length; // 2 
foo.length; // 1 
संबंधित मुद्दे