我在 jquery ui 上遇到了一个奇怪的行为(在 jquery 1.8.3、jquery-ui 1.9.2 上测试)。
我有一个父子小部件,在父级的 _create 方法上,我将父级的自我引用提供给新创建的子级。当我尝试从子内部访问此引用时,在构建子之后声明的所有函数和属性都不可用。
(function ($) {
$.widget("ui.parentWidget", $.ui.mouse, {
version: "@VERSION", widgetEventPrefix: "parentWidget",
_create: function () {
var self = this;
self.child = $("<div/>")
.childWidget({ parent: self })
.appendTo(self.element);
self.parentName = "parent";
},
parentFeature: function() {
return "feature";
},
getChild: function() {
return this.child;
},
updateChild: function () {
var self = this;
self.child.childWidget("update", self);
}
});}(jQuery));
子小部件
(function ($) {
$.widget("ui.childWidget", $.ui.mouse, {
version: "@VERSION", widgetEventPrefix: "childWidget",
options: {
},
_create: function () {
},
childParent: function () {
return this.options.parent;
},
updatedParent: function() {
return this.newParent;
},
update: function(parent) {
var self = this;
self.newParent = parent;
}
});
}(jQuery));
现在要测试我的输出,我只需创建一个父级,检索其子级,然后从子级读取子级的父级并显示结果。
var parent = $("<div/>").parentWidget();
parent.parentWidget("updateChild");
var child = parent.parentWidget("getChild");
var childParent = child.childWidget("childParent");
var updatedParent = child.childWidget("updatedParent");
childParent.parentName
或者childParent.parentFeature()
在undefined
ie7 和 ie8 上运行良好,其他任何地方都updatedParent
拥有它的所有内容。
我的问题是,这是一个错误吗?还是我误解了如何正确使用 jquery ui 插件。