我正在使用jQuery UI小部件工厂。
$.widget("myPlugin" , {
options: {
},
_create: function() {
},
instanceVar: "huzzah!"
});
在测试中,看起来instanceVar实际上是原型的一部分。所以插件的所有实例都是一样的。
我可以通过将instanceVar放入选项来解决这个问题,如下所示:
$.widget("myPlugin" , {
options: {
instanceVar: "huzzah!"
},
_create: function() {
},
});
然而这似乎很奇怪,因为instanceVar只是插件使用的内部变量 - 而不是插件的用户应该能够改变的东西。
还有其他(更好)的方法来实现这个目标吗?
感谢您的帮助!
答案 0 :(得分:13)
您可以在实例本身上存储私人数据,例如,在_create
内,您应该可以this.instanceVar = "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!