2012-02-09 60 views
5

阿尔特CSS规则定义比方说,你要改变许多元素的宽度,以模拟表为例。我知道你可以这样做:使用jQuery

$(".class").css('width', '421px'); 

这改变了内联style='width: 421px;'属性每个元素。现在,我想要做的:就是改变实际的CSS规则定义:

.class { 
    width: 375px; ==[change to]==> 421px; 
} 

当涉及到100的,如果要改变的嵌套<ul><li>需要不是1000的,好像这将是不是试图让jQuery的通过.css()方法做的工作更好的性能。

我发现this example - 这就是我想要做的事:

var style = $('<style>.class { width: 421px; }</style>') 
$('html > head').append(style); 

我并不想交换类($el.removeClass().addClass()),因为我不能有一个类为每一个最优宽度(379px,387px,402px ..)。

我可以创建一个<style>元素和动态设置宽度,但是我想有一个更好的办法。

+2

我真的觉得你应该在你的CSS编写两个类,并添加/需要时删除相应的。你不应该在JS中弄乱你的样式表,它很快就会变得无法维护。 – kapa 2012-02-09 21:48:55

+0

@kapa,这也有其局限性,因为所有的CSS在预先定义。例如,你不能突出显示任意的第n个子元素:'#root> div:nth-​​child('+ Nth +'){background:red; }'' – 2018-01-19 11:33:06

回答

1

document.styleSheets [0] .addRule作品在Chrome中, '不是' 的函数在FF

0

什么对我而言,在标题中包含一个空白样式块:

<style id="custom-styles"></style> 

然后操作这些像这样的东西:

$('#custom-styles').text('h1 { background: red }') 

我测试过这似乎在Chrome(当然,铬 - 63.0)的当前版本的工作和Firefox(57.0.4)。