gpt4 book ai didi

jquery - 如何在 jquery ui 小部件工厂小部件中声明静态/类变量

转载 作者:行者123 更新时间:2023-12-03 22:16:45 24 4
gpt4 key购买 nike

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

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

例如

$.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');

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

(如果你想玩的话,这个代码在 jsfiddle 上: http://jsfiddle.net/alzclarke/Sx8pJ/ )

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

1) $('body').data('sharedVariable', myData) - 这似乎不是一个好的做法,如果某人或某物清除了数据正文怎么办2)将其存储在原型(prototype)命名空间中,例如= $.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com