如何在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解决方案进行了管理,但当您有多个属性要更新时,这会成为一个问题。也就是说,我没有意识到对象构建的事情。这就是我想要的。这非常有用,谢谢:)