0

我们如何使用三元运算符更改 propertyName/s?

例如:

var horizontal = false,
    propertyName = horizontal ? 'left' : 'top';

$(".elem").css({
    propertyName: value
});

我找到了一些答案,但它们不适合我的情况。

https://stackoverflow.com/a/5973518/1250044

https://stackoverflow.com/a/12228404/1250044


Praveen Kumar发现了一种可能性。但是还没有决赛!

好的,我认为最好的答案是,正如 Explosion Pills Explosion Pills所说:

var horizontal = false;

$(".elem").css(horizontal ? {
    left: 10
} : {
    top: 10
});

小提琴一样生活。

4

2 回答 2

4

以文字表示法声明对象时,您不能评估变量。

相反,你可以直接这样给它:

elem.css((horizontal ? 'left' : 'top'), value);

小提琴:http: //jsfiddle.net/YXyng/

于 2012-10-12T06:21:20.407 回答
1

您不能直接将变量值作为对象属性的标识符传递,但您可以执行以下操作:

var value = "15px";
var horizontal = true;
var propertyName = horizontal ? 'left' : 'top';
var parameters = {};
parameters[propertyName] = value;

elem.css(parameters);

看它住在这个小提琴里。

于 2012-10-12T07:18:31.183 回答