以下问题:
我有一个像这样的jquery函数:
(function($){
$.fn.myFunction = function(opts){
var settings = {
params: {}
};
}
if ( options ) {
$.extend( settings, options );
}
}
现在,该函数应用于这样的元素:
$('#elem').myFunction({'data':'test','data2': 'test2'});
如何从函数外部访问settings-property?
意味着,在初始化函数之后,我想更改一些设置 - 但我无法弄清楚如何。
有什么想法吗?
(希望我写的不是太混乱:)。
答案 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);