2011-10-09 50 views
3

我使用jqueryUI的Widget工廠來擴展jqUI的對話框部件。我已經設置了我能想到的最簡單的部件。它什麼也不做,只是從對話繼承而來。儘管如此,我還是無法讓它起作用。使用jQueryUI的Widget工廠來擴展對話框

我有一個小提琴在這裏展示了它: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 is undefined

我看不到我做錯了什麼。我非常感謝任何幫助。謝謝。

+2

是因爲你重寫了_create函數嗎? –

+0

謝謝!是的......我看到我需要在我的覆蓋函數中調用base _create函數來獲取原始功能。說得通。你想讓你的評論成爲一個答案,所以我可以給你信用嗎? –

+0

當然!聽起來不錯。 –

回答

3

正如我在評論中寫的那樣,它不工作的原因是因爲你覆蓋了_create函數。