3

我正在为 jQuery 编写插件。我有扩展插件的问题。例如,我编写了插件:http://docs.jquery.com/Plugins/Authoring

请参阅以下示例代码:

(function($){
    var i18n    = {};
    var methods = {};
    $.fn.myPlugin = function(options){
        //...
   };
})(jQuery);

我怎样才能扩展财产i18n

我希望能够支持存储在单独文件中的国际化插件设置。我应该怎么做?

4

4 回答 4

2

例如:

// plugin definition
$.fn.hilight = function(options) {
  // Extend our default options with those provided.
  // Note that the first arg to extend is an empty object -
  // this is to keep from overriding our "defaults" object.
  var opts = $.extend({}, $.fn.hilight.defaults, options);
  // Our plugin implementation code goes here.
};
// plugin defaults - added as a property on our plugin function
$.fn.hilight.defaults = {
  foreground: 'red',
  background: 'yellow'
};

从这里http://www.learningjquery.com/2007/10/a-plugin-development-pattern

这是一个非常好的入门教程

于 2012-05-01T16:37:55.787 回答
1

jQuery 插件通常会像这样扩展选项:

var i18nOpts = $.extend({}, i18n, options.i18n);

文档:http ://docs.jquery.com/Plugins/Authoring#Defaults_and_Options

这发生在插件本身内部。

(function($){
    var i18n    = {};
    var methods = {};
    $.fn.myPlugin = function(options){
        var i18nOpts = $.extend({}, i18n, options.i18n);
   };
})(jQuery);

i18n仅存在于该函数内部,要扩展它,您现在可以将选项传递给插件。

$('#myDiv').myPlugin({
    i18n: {
        option1: "value",
        option2: "Value2"
    }
});
于 2012-05-01T16:32:23.500 回答
1

下面是我自己使用的一个方便的模板。

(function($){

var MyClass = function (element, options){

   this.options = $.extend({}, options);

   this.someFunction = function (){...}  //Public members

   var otherFunction = function(){...}   //Private members

   $(element).data('pluginInstance', this);   

}


$.fn.myPlugin = function(options){

    var myClassInstace = new MyClass(this, options);

    //Do other things with the object.
}

})(jQuery);
于 2012-05-01T17:26:21.813 回答
0

您可以通过jQuery 的$.extend(objectA, objectB)方法来完成。我认为你最好开始学习 jquery 插件开发。来自基本的 hello world 教程,例如此链接http://www.tectual.com.au/posts/3/How-To-Make-jQuery-Plugin-jQuery-Plugin-Hello-World-.html 或检查此帖子这里https://stackoverflow.com/a/11611732/1539647

于 2012-07-23T11:46:57.807 回答