【问题标题】:jQuery, altering css class itselfjQuery,改变 css 类本身
【发布时间】:2026-01-16 08:40:01
【问题描述】:

是否可以用 jQuery 改变 css 类?例如,如果我定义了这个类:

.my-class{
  right:10px;     
}

现在我想把它改成

.my-class{
  right:20px;     
}

不必用 $(".myClass") 选择这个类的所有元素。我想这样做的原因是我在运行时在 js 中添加了很多元素,并且提前交换类定义会很好。

.myClass 是在 css 文件中定义的,否则我想如果它在页面上,我可以用 jsf/jstl 更改它的定义。

【问题讨论】:

标签: jquery css


【解决方案1】:

从技术上讲,您可以使用 document.styleSheets 对象使用 Javascript 编辑样式表,但您可能会发现它的工作量远远超过其价值。阅读这篇文章以了解它是多么混乱:http://www.quirksmode.org/dom/changess.html

【讨论】:

  • 是的,很遗憾它是如此的一团糟。它可能很有用。
【解决方案2】:

如果我这样做,我会使用内联样式。

<div style="right:20px"><!-- blank --></div>

$('div').css('right','10px');

另一种选择是拥有两个类并使用toggleClass()在它们之间切换

<div class="right10"><!-- blank --></div>

$('div').toggleClass('right20');

【讨论】:

  • 我会说同样的话。如果样式变化太大,我会去内联,如果有一定数量的选项,我可能会定义和切换它们。
  • 这个类只有两种变体,这使得它更简单。但我不希望在 dom 中查询这些元素。我正在渲染的页面很大。
  • 您的选择器可以更具体以加快速度。
【解决方案3】:

添加第二个类并在添加元素时将元素设置为第二个类?或者,您可以在运行时换出样式表。

http://www.kelvinluck.com/2006/05/switch-stylesheets-with-jquery/

【讨论】: