2012-10-12 10 views
5

मैं एक सरल jQuery प्लगइन लिखा है, लेकिन मैं इसे और अधिक उन्नत तो मैं जैसे काम कर सकें करना चाहते हैं:

$.myplugin.close(); 
$.myplugin.open(); 
$.myplugin.next(); 
$.myplugin.prev(); 

मुझे लगता है कि इस तरह से कहा जा सकता है एक प्लगइन कैसे लिख सकता है?

------------------------- अपडेट किया गया -------------------- -----

धन्यवाद @ क्रेग मैकग्रेगर, इसकी सराहना करते हैं।

लेकिन समारोह यह इतना की तरह की तरह नीचे

$(this).myplugin.load(); 
+2

यह खराब प्रारूप है और कभी बी नहीं होना चाहिए ई इस तरह बनाया गया। सभी कार्यों को विधियों के रूप में एक्सेस किया जाना चाहिए, जैसे $ ('ele')। Myplugin ('बंद/खुला/अगला/पिछला'); – Ohgodwhy

+2

इतने सारे अपवॉट ... अजीब। – gdoron

+0

@Ohgodwhy अगर मुझे अपने विकल्पों को अधिक विस्तार से सेट करने की आवश्यकता है तो मुझे '$ (' ele ') के रूप में लिखना होगा। Myplugin ({action:' close ', xxx: xxx ......}) ; ' – user1740052

उत्तर

3

आप "myplugin" करने के लिए एक वस्तु प्रदान कर सकते हैं की जरूरत है कॉल करने के लिए:

$.myplugin = { 
    close: function(){ 
     //code 
    }, 
    open: function(){ 
     //code 
    }, 
    next: function(){ 
     //code 
    }, 

    prev: function(){ 
     //code 
    } 
}; 
2

सिर्फ एक उदाहरण:

(funciton($) { 
    var methods = { 
    init: function() {}, 
    close: function() {}, 
    open: function() {}, 
    prev: function() {}, 
    next: function() {}, 
    }; 

    $.fn.myplugin = function (method) { 
    if (methods[method]) { 
     return methods[method].apply(this, [].slice.call(arguments, 1)); 
    } else if (typeof method == 'object' || !method) { 
     return methods.init.apply(this, arguments); 
    } else { 
     $.error('Method ' + method + ' does not exist on myplugin'); 
    }  
    }; 

}(jQuery)); 

//usage 
$(selector).myplugin(); 

// call methods 
$(selector).myplugin('close'); 
$(selector).myplugin('open'); 
$(selector).myplugin('next'); 
$(selector).myplugin('prev'); 
संबंधित मुद्दे