![](/img/trans.png)
[英]TypeError: this.element is undefined in Firefox 22.0 causing my site to be down
[英]Javascript Inheritance - this.element is undefined in subclass
我正在尝试建立一个扩展子类的父类,但是当我从超类调用子类时尝试引用this.element时,它是未定义的。 我在这做错了什么?
$.widget("ui.testSuper", $.extend({}, $.ui.testSub.prototype,
{
_init: function ()
{
$.ui.testSub.prototype._init();
},
...
}));
$.widget("ui.testSub", $.ui.mouse,
{
_init: function ()
{
this.element.addClass("some-class");
},
...
});
$('#some-element').testSub({ }); // this works fine
$('#some-element').testSuper({ }); // this.element is undefined
扩展$.ui.testSub
它不存在。 您需要做的就是交换这两个代码块:
//Should be first
$.widget("ui.testSub", $.ui.mouse,
{
_init: function ()
{
this.element.addClass("some-class");
},
...
});
$.widget("ui.testSuper", $.extend({}, $.ui.testSub.prototype,
{
_init: function ()
{
$.ui.testSub.prototype._init();
},
...
}));
$('#some-element').testSub({ }); // this works fine
$('#some-element').testSuper({ }); // then it will work fine as well
在这里查看实例
UPDATE
我得到你所说的。 你需要像这样调用基本方法
$.ui.testSub.prototype._init.call(this);
所以你不会失去元素的上下文。 示例在这里
我不确定是否使用$ .extend是这样的方式。
以下是我通常扩展jQuery UI小部件的方法:
$.widget('ui.testSuper', $.ui.testSub {
_create: function() {
$.ui.testSub.prototype._create.call(this);
}
});
我看到你正在使用_init,所以必须使用旧版本的jQuery UI。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.