2015-09-02 73 views
1

当我像下面这样做,它不工作!你可以帮我吗为什么这样?在css方法中传递动态属性

var propertyName = 'left'; 
var propertyVal = $("body").width(); 

$('nav').css({ propertyName: propertyVal , 'position': 'absolute'}); 
+1

请添加更多的信息和你的研究,假设,代码。告诉我们你做了什么。我们在这里帮助您学习,而不是免费的软件支持。 –

回答

1

相反,你可以做到这一点的方法:

$('nav').css(propertyName, propertyVal) 
     .css('position', 'absolute'); 

您也可以使用array符号添加:

cssProperties[propertyName] = propertyVal 
+0

嗨@Praveen你的方式是完全正确的..但如果有很多动态属性,想要在CSS方法下添加,那么这种解决方案将是繁琐的写一遍又一遍.. –

+0

当然......':)'有很多方法。 –

2

的问题是,因为你不能使用一个变量作为使用您拥有的语法的对象中的属性名称。相反,您需要使用括号表示法来定义该属性及其值。试试这个:

var cssSettings = { 'position': 'absolute' }; 
cssSettings[dynCssProperty] = widthMenu; 
$('nav').css(cssSettings); 

或者,您也可以两次调用css()方法,单独设置每个属性:

$('.nav').css('postion', 'absolute').css(dynCssProperty, widthMenu);