2012-01-21 42 views
2

的方法,我有一個jQuery插件是這樣的:調用擴展的jQuery插件

$.widget("ui.MyWidget", { 
       options: {    
      Value1: 10, 
      Value1: 20, 
     }, 
// and other methods like _create,... 
}); 

而且,我擴展它是這樣的:

$.widget("ui.MyExtWidget", $.extend({ 
      options: { 
      Value3: 20, 
     }}, $.ui.MyWidget.prototype, { 
     myNewMethod: function(){ 
      alert(this.options.Value1+this.options.Value3); 
     } 
} 

我不得不稱之爲「myNewMethod」在我HTML。

我的HTML代碼是這樣的:

$("#Div1").MyExtWidget(); 
$("#Div1").MyExtWidget("myNewMethod"); 

我越來越喜歡這個例外在使用上面的代碼不能調用TimeSpanHeader方法在初始化之前;試圖調用方法'myNewMethod'

什麼是調用「myNewMethod」方法?

回答

1

小部件工廠提供了一種從現有的小部件$.widget構造擴展:

$.widget("ui.MyExtWidget", $.ui.MyWidget, { 
    options: { 
     alertText: '' 
    }, 
    myNewMethod: function() { 
     alert('Value1 = ' + this.options.Value1); 
     alert('alertText = ' + this.options.alertText); 
    } 
}); 

注:構造將採取延長選項,以及照顧。這是jQuery UI庫自身使用的方法。例如,小部件ui.mouse有多個選項,其他小部件從中繼承,並有自己的額外選項以及來自ui.mouse的選項。

DEMO


從微件廠wiki post

微件工廠是全局jQuery對象上的簡單函數 - jQuery.widget - 接受2個或3個參數。

jQuery.widget( 「namespace.widgetname」 /*可選 - 現有的插件原型從/,/繼承字面的對象成爲小部件的原型*/{...});

第二個(可選)參數是從繼承的小部件原型。 例如,jQuery UI有一個「鼠標」插件,其餘的交互插件都基於該插件。爲了實現這一點,可拖動的,等等,都從鼠標插件繼承,如下所示: jQuery.widget(「ui.draggable」,$ .ui.mouse,{...});如果你不提供這個參數,小部件將直接從「base 小部件」,jQuery.Widget(注意小寫「w」 jQuery.widget和大寫「W」jQuery.Widget之間的區別)繼承。

+0

感謝您的回覆,在這種情況下,我們不能添加一個新的選項,只有知道基礎小部件的選項。 –

+0

當然你可以,我已經更新了anwser和小提琴給你看。這是jQuery UI庫中的小部件使用的確切方法。 –

+0

謝謝,它的工作正常。 –