2012-11-05 84 views
4

我原本,jQuery的动画功能

targetWater.animate({ 
    "width": "+=100%" 

现在我要动态地使用“宽度”或“高度”

var direction = (targetWater.hasClass('x'))? "width" : "height"; 
targetWater.animate({ 
    direction: "+=100%" 

但这不起作用。

我已经试过

direction.toString() 

''+direction+'' 

没有喜悦与此两种

var anim = { direction: "+=100%" } 
targetWater.animate(anim, 

回答

8

因为direction你的办法行不通被解释为关键,不一个变量。

你能做到像这样:

var animation = {}; 
var direction = targetWater.hasClass('x') ? "width" : "height" 
animation[direction] = "+=100%"; 
targetWater.animate(animation); 

的方括号做,所以你可以关键动态。


如果您想关键"direction"用方括号你可以这样写:

animation["direction"]; 

这相当于:

animation.direction; 
+0

+1,所有的答案都是正确的,这是一个很好的格式和解释。 – jbabey

+0

非常感谢你 – Titan

2

使用括号标记:

var anim = {}; 
anim[direction] = "+=100%"; 
2

Yo ü变量不插,你需要将它定义方式如下:

var options = {}; 
options[direction] = "+=100%"; 

targetWater.animate(options , /*...*/ 
+0

这个作品谢谢你! – Titan

2

我建议你将其创建为一个属性,并将其传递给.animate功能。见下文,

var direction = (targetWater.hasClass('x'))? "width" : "height"; 

var animProp = {}; 
animProp[direction] = "+=100%"; 

targetWater.animate(animProp, /*..*/); 
2

你可以使用“阵列式”(括号)符号创建“正确” /动态属性:

var animation = {}; 
animation[targetWater.hasClass('x'))? "width" : "height"] = "+=100%"; 

targetWater.animate(animation); 
2

不,你不能使用内部的密钥变量。要么你打造的对象,具有支架符号

var anim = {}; 
anim[ targetWater.hasClass('x') ? "width" : "height" ] = "+=100%"; 
targetWater.animate(anim, … 

,或者您不使用对象

targetWater.animate(targetWater.hasClass('x') ? "width" : "height", "+=100%", …