2010-11-02 477 views
1

這裏我有一個小部件,我想調用一個函數一次#slider.slider();。代碼是什麼?jquery:小部件的初始功能

$("#slider").slider({ 

    //initial function here. 
    alert("A"); 

    value: 50, 
    slide: function(event, ui) { 
      displaySlideValue(); 
    } 

}); 
+1

你不清楚什麼時候該函數被調用。 – mikerobi 2010-11-02 14:00:53

+0

@mikerobi:腳本加載小部件時 – Zebra 2010-11-02 14:25:09

回答

1

爲什麼不只是做

$('#slider').slider({ ... }).each(function() { /* your code here */ }); 

另外,您可以包裹.slider()呼叫在自己的迷你延長:

$.fn.sliderWithInit = function(params, init) { 
    return this.slider(params).each(init); 
}); 

,那麼你可以說

$('#slider').sliderWithInit({ /* params */ }, function() { /* init code */ }); 

明顯「滑塊」可以由通用:

$.wrapWithInit = function(widgetName) { 
    $.fn[widgetName + 'WithInit'] = function(params, init) { 
    return this[widgetName](params).each(init); 
    }); 
}); 

然後你就可以「對話」做例如:

$.wrapWithInit('dialog'); 
$('#dialog').dialogWithInit({ /* dialog params */ }, function() { /* init code */ }); 

由於@mikerobi指出的,它不是100%清晰你想你的初始化函數被調用。大多數小部件都有一個「onFoo」類型的回調函數,這個回調函數在小部件被激活時調用(無論對於給定的小部件是什麼意思)。如果你只是想在第一次調用時初始化,那麼你可以讓回調函數成爲一個閉包,用來跟蹤它是否完成了初始化工作。如果它檢測到它已經完成了,它就會返回。

+0

非常感謝! – Zebra 2010-11-03 18:42:30