1

我有一个前段时间写的简单(轻量级) div 滑块,因为我在各种不同的项目中使用它 - 是时候将它包装到自己的插件中了(冒着不再那么轻量级的风险! )。

我一直在阅读,并从http://docs.jquery.com/Plugins/Authoring复制,因为这正在弹出我的插件樱桃,这很有意义(主要是),但有些事情让我望而却步。这是我的插件代码:

(function( $ ) {

    //List of callable methods
    var methods = {
        init : function(options) {

            var settings = $.extend({

                optionOne   : 'aaa',
                optionTwo   : 'bbb',
                optionThree : 'ccc',
                optionFour  : 'ddd'

            }, options);        

        },

        error : function(message) {
            alert(message);            
        },        

        showSettings : function() { 
            //This bit... how to show whats in 'settings' defined in init?
        }

    }

    $.fn.ccSlider = function( method ) {

        //Calling methods
        if (methods[method]) {
            //If plugin is called with a recognised method, run that.
            return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if (typeof method === 'object' || !method) {
            //if plugin is called without a method, run the init() function
            return methods.init.apply( this, arguments );
        } else {
            //Run the error() function to catch all else.
            return methods.error("ccSlider: Method '"+method+"' does not exist!");            
        }
    };

})( jQuery );

这里的一切都按预期工作,但我无法继续编写我需要的方法,只是因为我不知道如何在 init() 方法之外访问“设置”的内容。

我正在使用“showSettings”作为测试......我将如何编写一个弹出的 showSettings 方法并告诉我指定设置的值(比如 optionTwo)是什么?

4

1 回答 1

1

你得到了正确的架构,但是方法和设置应该对你的插件都是全局的。

(function( $ ) {
   var defaults = {
        optionOne   : 'aaa',
        optionTwo   : 'bbb',
        optionThree : 'ccc',
        optionFour  : 'ddd'
   } //if there are any

   var settings = {}; //you can reach the settings from any where in your plugin now
   //List of callable methods
   var methods = {
      init : function(options) {
         //initialize the settings in your init function and you are good to go
         settings = $.extend({},defaults,options);        
      },

      error : function(message) {
        alert(message);            
      },        

      showSettings : function() { 
        //This bit... how to show whats in 'settings' defined in init?
      }

  }

  //your plugin code here like in your post but now you can use the settings variable      we defined in your plugin
});
于 2012-04-06T21:10:08.137 回答