关于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/