2012-05-16 81 views
5

我想使用jQuery css()函数动态地设置div元素的css,而不是使用css()函数的字符串文字/字符串常量。可能吗?是否有可能将变量传递给jQuery的css函数?

而不是使用下面的代码与字符串文字:

$('#myDiv').css('color', '#00ff00'); 

我想用变量来设置的CSS #myDiv元素像

版本1:

var propertyName = get_propery_name(myVariable1); // function get_propery_name() returns a string like 'background-color' 
var value = get_value(myVariable2) ; // function get_value() returns a string like '#00ff00' 
$('#myDiv').css(propertyName, value); 

版本2 :(只是硬编码,看看他们是否工作,而不需要调用上述版本1的自定义函数):

var propertyName = 'background-color'; 
var value = '#00ff00'; 
$('#divLeftReportView').css(propertyName, value); 

代码的两个变量版本都不起作用。请帮忙。谢谢。

+1

没有什么特别的了。这两个变种应该工作得很好:http://jsfiddle.net/UQWyH/ – VisioN

+0

它是如何工作的? – jrummell

+0

这是否回答了您的问题?如果其中一位帮助你,请接受答案 –

回答

1

你在这里发布的代码应该可以工作。我已经完成了几次你想要做的几个版本。如果它不工作,那么很可能在JavaScript的其他地方发生了某些错误,或者您没有为要更改的元素提供正确的选择器/ ID。

尝试在$('#divLeftReportView').css(propertyName, value);之后立即加上alert("test");。如果你弹出“测试”的问题,那么问题出在你的选择器上。如果没有,那么问题是你的JavaScript中的错误。

也尝试在相同的地方添加$('#divLeftReportView').css("background-color", "#00ff00");。这将确认选择器是否工作。

+0

谢谢。我发现问题是我使用大写的属性名称像BACKGOUND-COLOR的jQuery css()方法,所以我的代码不能用于$('#divLeftReportView')。css(“BACKGOUND-COLOR”,“#00ff00”);事实证明,属性名称必须是小写。所以,代码应该是$('#divLeftReportView')。css(“background-color”,“#00ff00”); – user1219702

1

似乎在http://jsfiddle.net/gaby/6wHtW/

做工精细请确保您的DOM ready事件后运行代码..

$(function(){ 
    var propertyName = 'background-color'; 
    var value = '#00ff00'; 
    $('#divLeftReportView').css(propertyName, value); 
}); 

否则你的元素可能不会出现在DOM ..

+0

如果'value'变量的值是从输入文本框(用户输入)获得的,如:var value = $('#myTextBox')。val(); ?我的意思是如何将'value'变量的值转换为字符串常量或字符串常量? – user1219702

+0

因为它是一个字符串,它将按原样工作......无论你传递一个字符串字面量还是一个持有字符串的变量,它都是一样的。 –

2

你的两个例子都能正常工作。我建议只是有点更简洁的方法(个人喜好的语法):

$(document).ready(function() { 
    $('#myDiv').css(get_propery_name(myVariable1), get_value(myVariable2)); 
} 

这里的a working fiddle

如果你想采取了一步,你可以返回一个CSS的地图,而不是字符串:

$('#divLeftReportView').css(GetCssMap("foo")); 

function GetCssMap(mapIdentifier) { 
    return { "background-color" : "#00ff00" } 
} 

这里的a working fiddle

0

还可以将一个变量中传递多个CSS参数数组:

$(function(){ 
    var divStyle = {'background-color': '#00ff00', 'color': '#000000'} 
    $('#divID').css(divStyle); 
});