我正在使用jqueryUI的widget工具来扩展jqUI的对话框小部件。我已经设置了我能想到的最简单的小部件。它什么都不做,只是继承自对话。我仍然无法让它发挥作用。
我有一个小提琴在这里展示:View Fiddle
这是测试标记:
<div id="a">hello</div>
<div id="b">bye</div>
这是javascript:
(function ($, undefined)
{
var o = //Widget prototype
{
options: {},
_create: function () {},
destroy: function ()
{
$.Widget.prototype.destroy.call(this);
},
_setOption: function (key, value)
{
$.Widget.prototype._setOption.apply(this, arguments);
},
};
//Run jQuery's widget factory to create the widget
$.widget('cs.csDialog', $.ui.dialog, o);
} (jQuery));
//Test it out
$("#a").dialog(); //Works
$("#b").csDialog(); //Fails
在jqUI里面我收到以下错误: this.uiDialog未定义
我看不出我做错了什么。我非常感谢任何帮助。谢谢。
答案 0 :(得分:3)
正如我在评论中写的那样,它不起作用的原因是因为你覆盖了_create函数。
答案 1 :(得分:0)
仅供未来读者使用,以下是如何调用评论中提到的基本_create函数。答案受到William Niu答案的启发,针对不同的问题。
_create: function() {
$.ui.dialog.prototype._create.call(this);
}
调用base _create的另一种方法是在方法中添加以下代码行:
this._super();