在jQuery中动态定义具有特定样式的类

时间:2010-04-25 12:44:12

标签: javascript jquery css

是否可以使用jQuery动态定义具有特定样式属性的类,而不是使用该类设置所有元素的样式?

一旦创建了所有元素,我就可以在脚本末尾设置类的属性,但这是最好的方法吗?如果我在脚本开头用$('.class').css('property','value');定义类的样式,那么什么都不会发生,因为尚未创建类.class的元素,对吧?

3 个答案:

答案 0 :(得分:6)

这样做的正确方法是使用CSS。如果您希望类“foo”的元素具有一堆属性,那么将这些属性放在CSS文件中并将它们与适当的选择器相关联:

.yourClass {
  font-weight: bold;
  color: green;
}

如果您需要动态执行此操作,则可以使用Javascript编写CSS块。在页面中添加<style>元素并为其指定“id”值:

<style id='dynamicStyle'></style>

然后你可以用jQuery设置它:

$('#dynamicStyle').text(".yourClass { font-weight: bold; }");

答案 1 :(得分:3)

如果我理解你,你想为特定元素添加风格。

您不必使用.css(a,b)来执行此操作。 jQuery有一个名为addClass("className");的函数,它将一个类添加到你想要的任何元素中。

$('.originalClass').addClass('addedClass');

它不会覆盖原件。

这就是你想要的吗?


修改

或者您是说要在javascript中修改样式表?

如果是这种情况,则有修改样式表属性的javascript规则。

如果您(出于某种原因)无法更改样式表,那么您可以将样式存储在对象中,然后应用它。

var stylesToAdd = { background:"orange", border:"1px solid blue" }

并使用.css()来应用它们。

$('#myElement').css(stylesToAdd);

答案 2 :(得分:0)

不确定你的理由是什么,但是 - 你必须在创建元素后调用脚本。如果您不希望将文档放在文档的末尾,请将其包装在

$(document).ready(function() {
 ...
});

或者,简写

$(function() {
 ...
});

所有HTML加载后都会触发。