2012-12-17 50 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'来自哪里:) –