如何在jQuery中使用var值代替css属性;。css();方法

如何在jQuery中使用var值代替css属性;。css();方法,jquery,Jquery,我有这个: $('.something').css({ 'margin-left' : '100px'}); 有时需要将其更改为: $('.something').css({ 'right' : '100px'}); 所以我一直在尝试将其放入字符串变量中,如下所示: var css_prprty = 'margin-left'; if(change_needed){ css_prprty = 'right'; } $('.something').css({ css_prprty

我有这个:

$('.something').css({ 'margin-left' : '100px'});
有时需要将其更改为:

$('.something').css({ 'right' : '100px'});

所以我一直在尝试将其放入字符串变量中,如下所示:

var css_prprty = 'margin-left';
if(change_needed){
    css_prprty = 'right';
}

$('.something').css({ css_prprty : '100px'});

它失败了
出于某种原因,这似乎是合乎逻辑的,但我想不出解决这个问题的方法。


有人知道在这种情况下使用变量值的正确方法吗?

您有一个简单的解决方案:

$('.something').css(css_prprty,'100px');

现在,让我们讨论使用动态属性名构建对象的更一般问题。您不能一次完成,实际上,您必须分两步完成:

var obj = {};
obj[css_prprty] = '100px';
$('.something').css(obj);

(正如Oriol所指出的,ES6中会有一个快捷方式)

您有一个简单的解决方案:

$('.something').css(css_prprty,'100px');

现在,让我们讨论使用动态属性名构建对象的更一般问题。您不能一次完成,实际上,您必须分两步完成:

var obj = {};
obj[css_prprty] = '100px';
$('.something').css(obj);

(正如Oriol所指出的,ES6中会有一个快捷方式)

您的代码不起作用,因为
css\u属性
是一个
标识名
,因此生成的属性名就是它的属性名。因此,以下代码是等效的:

var obj = { css_prprty : '100px'};
var obj = { "css_prprty" : '100px'};
在EcmaScript 6之前,在创建对象文字时,无法使用变量作为属性名。必须先创建对象,然后使用括号符号设置属性:

var obj = {};
obj[css_prprty] = '100px';
EcmaScript 6引入了计算属性名,允许您执行以下操作

var obj = { [css_prprty] : '100px'};
但是,浏览器支持目前可以忽略不计


有关如何计算对象文字的详细信息,请参阅。

您的代码不起作用,因为
css\u属性
是一个
标识名
,因此生成的属性名是它的。因此,以下代码是等效的:

var obj = { css_prprty : '100px'};
var obj = { "css_prprty" : '100px'};
在EcmaScript 6之前,在创建对象文字时,无法使用变量作为属性名。必须先创建对象,然后使用括号符号设置属性:

var obj = {};
obj[css_prprty] = '100px';
EcmaScript 6引入了计算属性名,允许您执行以下操作

var obj = { [css_prprty] : '100px'};
但是,浏览器支持目前可以忽略不计


有关如何计算对象文字的详细信息,请参阅。

,因为OP正在将CSS属性作为对象传递。:)@EhsanSajjad好吧,今天,你不能用动态属性名构建一个文本对象。如果您使用支持ES6计算属性名称的浏览器,如Firefox 34,请参阅@dystroy。我已经使用You's First解决方案进行了管理,但当您有多个属性要更新时,这会成为一个问题。也就是说,我没有意识到对象构建的事情。这就是我想要的。这非常有帮助,谢谢:)因为OP正在以对象的形式传递CSS属性:)@EhsanSajjad好吧,今天,你不能用动态属性名构建一个文本对象。如果您使用支持ES6计算属性名称的浏览器,如Firefox 34,请参阅@dystroy。我已经使用You's First解决方案进行了管理,但当您有多个属性要更新时,这会成为一个问题。也就是说,我没有意识到对象构建的事情。这就是我想要的。这非常有用,谢谢:)