关于jquery ui widget factory:
如何使用静态变量/类级别变量,以便在所有实例之间共享?
例如:
$.widget("ui.staticTest", { staticVar:'不变', test: function(a){ if(a){ this.staticVar= a; } alert(JSON.stringify(this.staticVar)); } }); $('#test').staticTest(); $('#parent').staticTest(); $('#test').staticTest('test','改变'); $('#parent').staticTest('test');
在上述代码中,如果staticVar是静态的,则$('#parent').staticTest('test');将弹出'改变',但实际上它弹出了“不变”。
我能想到的解决方案比较丑陋:
1)$('body').data('sharedVariable', myData) - 这似乎不是好的做法,如果有人或某些事情清除了数据,则怎么办? 2)将其存储在原型命名空间中,例如= $.ui.staticTest.prototype.staticVar = myData; 这也引起了警觉。
(如果您想玩一下此代码,请访问jsfiddle:http://jsfiddle.net/alzclarke/Sx8pJ/)