2012-12-17 82 views
0

可能重複:
Using a dynamic variable as object literal, jQuery animate function如何將函數參數傳遞給jquery .animate?

我試圖傳遞一個函數的參數作爲一個jQuery動畫除了我無法得到它的工作的設置。

的功能

function gridClick(a, b){ 
    $(c).animate({ 
     a : 0, 
     b : 0 
    }, 10000) 
}; 

調用函數

gridClick('top', 'left', this); 

控制檯日誌顯示,A和B都被放出來的頂部和左側,但他們實際上並沒有影響到動畫的頂部和左側。這是一個語法錯誤還是有更多的?

+2

[使用動態變量作爲對象文字,動畫jQuery的功能]的可能重複(http://stackoverflow.com/questions/13236473/using-a-dynamic-variable -as-object-literal-jquery-animate-function)和[從變量設置對象鍵](http://stackoverflow.com/questions/12864544/setting-object-keys-from-variables)。 –

+0

「c」是否意味着該函數的第三個參數? – freejosh

+0

是的,但c與此問題無關。 – swgamerx150

回答

0

我不認爲你可以使用變量名稱作爲對象的屬性名稱使用對象文字。以下是一種可能的解決方法:

function gridClick(a, b) { 
    var params = {}; 
    params[a] = 0; 
    params[b] = 0; 
    $(c).animate(params, 10000); 
}; 
+0

OP缺少第三個參數(c),你也錯過了它:) –

+1

'c'可能是全局的,可以在外部範圍內定義,等等。 –

+0

我很懷疑,因爲gridClick('top', '左',這個);'但是你說的話可能是真的.. btw我沒有dw你的答案,因爲這根本不涉及這個問題。 –

0

如果要爲屬性名稱使用變量,則需要使用括號表示法和賦值。字面語法不支持它。

相反,使用:

function gridClick(a, b, c) { 
    var opts = {}; 
    opts[a] = 0; 
    opts[b] = 0; 
    $(c).animate(opts, 10000) 
} 
+0

嗯'params'來自哪裏:) –