2014-06-06 60 views
0

我正在使用第三方jQuery插件的選項可以被覆蓋。我有三個文件:插件源文件,設置我發送給插件的選項的Javascript文件,以及調用腳本的HTML文件。發送選項到一個jQuery插件

其中一個選項來自AJAX調用,爲了確保該選項可以正確加載,我在調用返回後使用$ .getScript加載腳本。其餘的選項是靜態的,所以它們可以保留在我的腳本文件中。

這是我如何調用從我的HTML文件中的插件腳本加載後:

$.("#plugin_selector").pluginName({newOption: ajaxValue}); 

下面是我能順利通過發送一組選項調用從我的JavaScript文件的插件(假設我AJAX調用之前)加載腳本:

var options = [{ 
    option1: value, 
    option2: value2, 
    option3: value3 
}); 

$.("#plugin_selector").pluginName(options); 

的問題是,當我的AJAX調用後加載腳本和發送新的選項,所有的我設置的其他選項,通過我的變量被覆蓋。理想情況下,我希望將這兩個陣列結合起來。

調用插件時,如何將從我的HTML文件發送的動態選項和腳本文件中的選項數組結合起來?我的Javascript文件中的選項數組調用該文件中的一些其他函數,所以我認爲將它保留在該Javascript文件內會更好。

我試圖遵循這種模式:http://jquery-howto.blogspot.com/2009/01/how-to-set-default-settings-in-your.html,但它不起作用,我認爲是因爲當插件被調用以覆蓋默認值時,第三方插件已經執行了$ .extend過程。

+0

我似乎無法正確理解問題。您是否實例化整個對象,還是隻設置預先實例化對象的選項? (「#plugin_selector」)pluginName({newOption:ajaxValue});你可以給出更多的代碼。調用和ajax函數? –

回答

0

不知道你正在處理的特定插件是很難確定的,但我認爲你快到了,$ .extend就是你想要做的。

所有$.extend確實將兩個對象合併在一起,而您想要做的是將您的初始靜態選項集合與您的ajax合併。

我假定這條線

$.("#plugin_selector").pluginName({newOption: ajaxValue}); 

從阿賈克斯成功處理程序叫什麼名字?如果是這樣,請嘗試將其更改爲此。

//This is somewhere on your page (in scope of your ajax callback) 
var options = { 
    option1: value, 
    option2: value2, 
    option3: value3 
    }; 


//This is inside your ajax callback 
$.("#plugin_selector").pluginName($.extend(options, {newOption: ajaxValue}); 
相關問題