我正在使用jQuery UI小部件工厂.
$.widget("myPlugin",{ options: { },_create: function() { },instanceVar: "huzzah!" });
在测试时,看起来instanceVar实际上是原型的一部分.所以插件的所有实例都是一样的.
我可以通过将instanceVar放入选项来解决这个问题,如下所示:
$.widget("myPlugin",{ options: { instanceVar: "huzzah!" },});
然而,这看起来很奇怪,因为instanceVar只是插件使用的内部变量 – 而不是插件的用户应该能够改变的东西.
有另一种(更好的)方法来实现这一目标吗?
谢谢你的帮助!
解决方法
您可以在实例本身上存储私有数据,例如,在_create内部,您应该可以执行此操作.实例Var =“huzzah!”
$.widget("ui.myPlugin",{ options: { foo: "foo" },_create: function() { this.instanceVar = "huzzah!" },_setOption: function() { this.instanceVar = "worky!"; },destroy: function() { console.log(this.instanceVar); } }); $(document).myPlugin().myPlugin("option","foo","bar").myPlugin("destroy"); // "worky" $("body").myPlugin().myPlugin("destroy"); // "huzzah!