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[ targetWater.hasClass('x') ? "width" : "height" ] = "+=100%";
targetWater.animate(anim, …

または、オブジェクトを使用しません

targetWater.animate(targetWater.hasClass('x') ? "width" : "height", "+=100%", …
于 2012-11-05T16:45:43.940 に答える
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 に答える