2009-09-16 4 views
2

Можно ли взять что-то вроде:JQuery переменные, как ключ в Key: атрибуты пара CSS

$("div").css({ 
    "top": var1, 
    "height": var2, 
    etc. 
}); 

И превратить его в:

var dir = "top"; 
var length = "height"; 

$("div").css({ 
    dir: var1, 
    length: var2, 
    etc. 
}); 

До сих пор единственным способом я могу получить его для работы является многократное объявление линий отдельно, например:

$("div").css(dir, var1); 
$("div").css(length, var2); 
$("div").css(etc.); 

Есть ли у кого-нибудь другие идеи? Причина, по которой я беспокоюсь об этом, - это то, что я хотел бы перевернуть мой модуль на 90 градусов (ака, пойдите слева направо или сверху вниз), и для этого мне придется иметь универсальный переменная для направления.

Благодарим заранее!

ответ

9

{ "top": var1, "height": var2 } создает объект JavaScript, который имеет два пользовательских свойства. К сожалению, JavaScript не позволяет использовать переменные в качестве имен свойств при определении объекта таким образом.

Вы должны быть в состоянии сделать это следующим образом:

var o = {}; 
o[dir] = var1; 
o[length] = var2; 
$("div").css(o); 
+0

Это очень интересное решение. Мне нужно будет больше подумать, но это определенно отвечает на вопрос. Благодаря! – Matrym

+0

Это очень выдающееся решение, большое спасибо @Grant! –

1

Попробуйте это ...

var myCss = {}; 
myCss[dir] = var1; 
$("div").css(myCss);