2

我在 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()undefinedie7 和 ie8 上运行良好,其他任何地方都updatedParent拥有它的所有内容。

我的问题是,这是一个错误吗?还是我误解了如何正确使用 jquery ui 插件。

4

0 回答 0