在对象属性名称中使用变量

时间:2011-10-02 08:11:35

标签: javascript jquery

我有一个名为direction的变量,它存储:leftright

我需要根据该变量更改受影响的保证金。

现在我正在使用条件,是否可以将“left”替换为变量direction的输出?

$("#map").animate({"margin-left": "+=50px"}, 500);

3 个答案:

答案 0 :(得分:5)

不是直接的,但您可以在animate()中使用它之前创建一个对象并对其进行操作:

var direction = "left";
var property = {};
property[ "margin-"+direction ] = "+=50px";
$("#map").animate( property, 500);

答案 1 :(得分:2)

使用它。由于没有margin-upmargin-down,您必须“手动”翻译它:

var dir = "left";
dir = dir == "up" ? "top" : dir == "down" ? "bottom" : dir;
var obj = {};
obj["margin-" + dir] = "+=50px";
$("#map").animate(obj, 500);

第二行是一种合法的,更短的写作方式:

if(dir == "up"){
    dir = "top";
} else if(dir == "down"){
   dir = "bottom";
} else {
    dir = dir;
}

答案 2 :(得分:0)

eval('props = {"margin-' + direction  + '": "+=50px"}')
$("#map").animate(props, 500);