使用jQuery更改CSS规则定义

Alter CSS rule definition using jQuery

本文关键字:规则 定义 CSS 更改 jQuery 使用      更新时间:2023-09-26

假设您想要更改许多元素的宽度,例如模拟一个表。我知道你可以这样做:

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

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

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

当涉及到需要更改的嵌套<ul><li>的100个(如果不是1000个的话)时,这似乎比试图让jQuery通过.css()方法来完成工作对性能更好。

我发现了这个例子——这就是我想要做的:

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

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

我可以创建一个<style>元素并动态设置宽度,但我认为有更好的方法。

document.styleSheets[0].addRule在Chrome中工作,在FF 中"不是函数"

对我有用的是在标题中包含一个空的样式块:

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

然后用这样的东西操纵它:

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

我已经测试过,这似乎可以在当前版本的Chrome(Chromium-63.0)和Firefox(57.0.4)中工作