在jquery函数中设置变量

时间:2012-08-23 13:18:18

标签: jquery

好吧,我知道,标题可能听起来有点奇怪......

以下问题:

我有一个像这样的jquery函数:

(function($){
    $.fn.myFunction = function(opts){
        var settings = {
           params: {}
        };
    }

    if ( options ) { 
      $.extend( settings, options );
    }

}

现在,该函数应用于这样的元素:

$('#elem').myFunction({'data':'test','data2': 'test2'});

如何从函数外部访问settings-property?

意味着,在初始化函数之后,我想更改一些设置 - 但我无法弄清楚如何。

有什么想法吗?

(希望我写的不是太混乱:)。

1 个答案:

答案 0 :(得分:1)

您必须将变量提升到更高级别的范围。

(function ($) {

    // we expose your variable up here
    var settings = {
    };

    $.fn.myFunction = function (opts) {
        // ...instead of down here
        // do something with settings, like:
        opts = $.extend({}, settings, opts);
    }

    // you can then access a "shared" copy of your variable even here
    if (options) {
        $.extend(settings, options);
    }

})(jQuery);

如果你必须进一步揭露它,你只需要同样的要点。

但请注意,请注意调用$.extend(settings, options)会修改settings变量。在不修改原始settings值的情况下执行相同操作的一种好方法是在空对象上调用$.extend(),并像在我的第一个$.extend()调用中一样缓存返回示例

var modified_options = $.extend({}, settings, options);