我一直在使用小部件工厂开发一个 jQuery 小部件。
一切都很好,除了我注意到如果我在同一页面上的多个 DOM 元素上实例化小部件,则小部件中的任何对象都将在 DOM 元素之间共享,但选项对象除外。
我认为所有对象和函数在小部件中都有自己的实例。我显然遗漏了一些东西,并希望得到一些指导。
例如:
(function($) {
$.widget("a07.BearCal", {
options: { className : "test" },
_glbl: { something: "" },
_create: function() {
this._glbl.something = this.element.attr('class');
this.options.className = this.element.attr('class');
},
});
})(jQuery);
// Instantiate widget on .full
$('.full').BearCal();
//Should output full
console.log($('.full').data('BearCal')._glbl.something);
//Should output full
console.log($('.full').data('BearCal').options.className);
// Instantiate widget on .mini
$('.mini').BearCal();
//Should output mini
console.log($('.mini').data('BearCal')._glbl.something);
//Should output mini
console.log($('.mini').data('BearCal').options.className);
//Should output full but outputs mini
console.log($('.full').data('BearCal')._glbl.something);
//Should output full
console.log($('.full').data('BearCal').options.className);
工作示例:http: //jsfiddle.net/NrKVP/4/
提前致谢!