![](/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.