使用jQuery UI Widget Factory创建实例变量的正确方法
我正在使用jQuery UI小部件工厂。
$.widget("myPlugin" , { options: { }, _create: function() { }, instanceVar: "huzzah!" });
在测试时,看起来instanceVar实际上是原型的一部分。 所以插件的所有实例都是一样的。
我可以通过将instanceVar放入选项来解决这个问题,如下所示:
$.widget("myPlugin" , { options: { instanceVar: "huzzah!" }, _create: function() { }, });
然而,这看起来很奇怪,因为instanceVar只是插件使用的内部变量 – 而不是插件的用户应该能够改变的东西。
有另一种(更好的)方法来实现这一目标吗?
谢谢你的帮助!
您可以在实例本身上存储私有数据,例如,在_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!
演示: http : //jsfiddle.net/PGUqr/