4

本来我有

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,
4

6 回答 6

8

您的方法不起作用,因为direction它被解释为键,而不是变量。

你可以这样做:

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

方括号使您可以动态获得密钥。


如果您想要"direction"带有方括号符号的键,您可以编写:

animation["direction"];

这相当于:

animation.direction;
于 2012-11-05T16:44:09.913 回答
2

使用括号表示法:

var anim = {};
anim[direction] = "+=100%";
于 2012-11-05T16:44:13.563 回答
2

您的变量不会被插值,您需要通过以下方式定义它:

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

targetWater.animate( options , /*...*/
于 2012-11-05T16:44:37.440 回答
2

我建议您将其创建为属性并将其传递给.animate函数。见下文,

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

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

targetWater.animate(animProp, /*..*/);
于 2012-11-05T16:44:46.720 回答
2

您可以使用“类数组”(括号)表示法来创建“正确”/动态属性:

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

targetWater.animate(animation);
于 2012-11-05T16:44:48.127 回答
2

不,您不能在键中使用变量。您可以使用括号表示法构建对象

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

或者你不使用对象

targetWater.animate(targetWater.hasClass('x') ? "width" : "height", "+=100%", …
于 2012-11-05T16:45:43.940 回答