如何在jQuery中编辑css规则?

目的是将行动态地添加到表中,以后稍后手动应用规则并不好(而且速度较慢)。

具体的例子是我正在创建一个树表来表示文件夹目录。 每个文件夹都是一个div 。 在每个div ,每个列的信息都有一个带有liul 。 这些li的类名等同于列名。 这提供了列宽。 我想让列可resize。 我可以做$('.className').css('width', newWidth)但是这不适用于新插入的项目。 因此,我想修改css规则。 我该怎么做呢?

jQuery并不是真的以这种方式编辑CSS。

尽管如此,使用.css()可以实现您想要的function。 不要更改单个元素的宽度,保持它们100%并调整其父容器的大小,因此任何新插入的项目的宽度都是100%并取父容器的宽度。

编辑你如何动态插入/更新行? 如果在现有行上使用.clone() ,则应包含.css()添加的内联css,这意味着您不必resize。

您可以使用具有ID的空样式标记设置html文档。

     

然后使用jQuery将规则“附加”到其中。

 var columName = "whatever-your-column-name-is" $('#styleTarget').append('.'+columName+' { width: '+newWidth+' }' ); 

如果你经常更新宽度会有点麻烦,但CSS解析器将使用列表中的最后一个规则,因此.append()可用于更新以前的宽度分配。 您可以使用.html()而不是.append()来覆盖样式表的内容。

我已经使用这个库直接修改css规则并且它可以解决这个问题(虽然这是一个纯粹的javascript解决方案):

http://www.hunlock.com/blogs/Totally_Pwn_CSS_with_Javascript

库如何直接修改规则:

 document.styleSheets[i].cssRules[i].style.width=newWidth; 

遗憾的是,由于JavaScript原生的限制,jQuery不能直接操纵CSS规则; 它的function只扩展到仅包含页面元素的DOM,因此不是CSS规则本身(甚至本机分配给元素的CSS属性也很难获得跨浏览器)。