关于jquery ui小部件工厂...

在所有实例之间共享静态变量/类级别变量的最佳方法是什么?

例如

$ .widget(“ui.staticTest”,{
staticVar:“不变”,
测试:功能(a){
如果一个){
this.staticVar = a;
}
alert(JSON.stringify(this.staticVar));
}
});

$('#test')。staticTest();
$('#parent')。staticTest();

$('#test')。staticTest('test','changed');
$('#parent')。staticTest('test');

在上面,如果staticVar是静态的,则$('#parent')。staticTest('test');会提醒“已更改”,但会提醒“未更改”。

(如果您想玩,此代码在jsfiddle上:http://jsfiddle.net/alzclarke/Sx8pJ/)

我能想到的解决方案很丑陋:

1)$('body')。data('sharedVariable',myData)-这似乎不是一个好习惯,如果有人或某物清除了数据主体该怎么办
2)将其存储在原型(prototype) namespace 中= $ .ui.staticTest.prototype.staticVar = myData;
这也会敲响警钟

最佳答案

封闭是您的答案

(function($) {

var staticVariable = '';

$.widget('ui.newWidget', {
    options: {

    },
    _init: function() {
    }

});

})(jQuery);

staticVariable仅在您刚刚定义的小部件的范围内可用,因为它包装在立即调用的匿名函数中(就像您应该已经为jquery/jquery ui插件所做的那样)。

关于jquery - 如何在jQuery UI小部件工厂小部件中声明静态/类变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5484727/

10-11 12:06