使用jQueryUI的widget工具来扩展对话框

时间:2011-10-09 01:24:04

标签: jquery jquery-ui jquery-plugins

我正在使用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未定义

我看不出我做错了什么。我非常感谢任何帮助。谢谢。

2 个答案:

答案 0 :(得分:3)

正如我在评论中写的那样,它不起作用的原因是因为你覆盖了_create函数。

答案 1 :(得分:0)

仅供未来读者使用,以下是如何调用评论中提到的基本_create函数。答案受到William Niu答案的启发,针对不同的问题。

   _create: function() {
       $.ui.dialog.prototype._create.call(this);
   }

调用base _create的另一种方法是在方法中添加以下代码行:

this._super();