como declarar uma variável estática / classe em um widget de fábrica de widgets jquery ui
Em relação à fábrica de widgets jquery ui ...
Qual é a melhor maneira de ter uma variável estática / variável de nível de classe compartilhada entre todas as instância
por exemplo
$.widget("ui.staticTest", { staticVar:'unchanged', test: function(a){ if(a){ this.staticVar= a; } alert(JSON.stringify(this.staticVar)); } }); $('#test').staticTest(); $('#parent').staticTest(); $('#test').staticTest('test','changed'); $('#parent').staticTest('test');
acima, se staticVar for static, $ ('# parent'). staticTest ('test'); alertaria 'alterado', mas em vez disso, alerta 'inalterado'.
(este código está no jsfiddle se você quiser jogar:http: //jsfiddle.net/alzclarke/Sx8pJ)
As soluções que consigo pensar são feias:
1) $ ('body'). Data ('sharedVariable', myData) - isso não parece uma boa prática, e se alguém ou alguma coisa limpa o corpo dos dados 2) armazena-o no namespace do protótipo, por exemplo = $ .ui.staticTest.prototype.staticVar = myData; isso também toca campainhas de alarme