如何在jQuery插件中提供公共功能?

Leg*_*end 1 javascript jquery closures

我编写了一个带有以下结构的小jQuery插件:

(function($) {
   // Private vars

   // Default settings
   $.PLUGINNAME = {
         id: 'PLUGINNAME',
         version: '1.0',
         defaults: {
              min: 0,
              max: 10
         }
   };

   // extend jQuery
   $.fn.extend({

       PLUGINNAME: function(_settings) {

           init = function() {

           }

           prepare = function() {

           }

           ...

           return this.each(function() {
                 _this = this;
                 init();
           });

       }

   });

})(jQuery);
Run Code Online (Sandbox Code Playgroud)

我这样称呼如下:

$("#update-panel").PLUGINNAME({
                min: 1,
                max: 20  
          });
Run Code Online (Sandbox Code Playgroud)

我试图提供一个额外的公共方法,其中函数内部的一些数据可以在上面的函数调用插件更新,我不知道如何去做.我要找的是这样的:

_PluginInstance = $("#update-panel").PLUGINNAME({
                    min: 1,
                    max: 20  
                   });
...
...
_PluginInstance.setMin(2); //should change the minimum to 2
Run Code Online (Sandbox Code Playgroud)

setMin可能会使用一些插件的内部变量,所以我不明白如何做到这一点.我知道我没有返回插件的实例来执行上述操作,但有人可以告诉我如何通过保持相同的插件结构来执行此操作吗?

mVC*_*Chr 6

只需使该函数成为对象this内的PLUGINNAME属性:

(function($) {
   $.PLUGINNAME = {
     // Default settings
   };

   // extend jQuery
   $.fn.extend({
       PLUGINNAME: function(_settings) {

           // private methods
           var init = function() {};
           var prepare = function() {};

           // public methods
           this.setMin = function ( val ) {
             _settings.min = val;
           };
           this.getMin = function () {
             return _settings.min;
           };

           return this.each(function() {
             _this = this;
             init();
           });
       }
   });
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

_PluginInstance = $("#update-panel").PLUGINNAME({
                    min: 1,
                    max: 20  
                   });
_PluginInstance.getMin(); // 1
_PluginInstance.setMin(2);
_PluginInstance.getMin(); // 2
Run Code Online (Sandbox Code Playgroud)

编辑:哦上帝我不敢相信我忘记了var关键字,为什么不告诉我我的苍蝇已经关闭?