使用JQuery更改类中的CSS规则
我有一个CSS类
.Foo { width:20px; }
使用Jquery我想在事件上做类似的事情:
$(".Foo").css("width", "40px");
这不起作用。 这是错误的做法吗? 我应该使用addClass()和removeClass()吗?
编辑:我想出了我的问题。 这个命令确实有效。 在我的特定应用程序中,在使用命令之前我没有使用类创建元素,因此在创建它们时没有任何更改。
基本上这个命令不会改变CSS样式规则,只改变使用类的元素。
jQuery.css
将在页面上找到所有具有Foo
类的现有元素,然后将其内联样式width
40px
为40px
。
换句话说,这不会创建或更改css规则 – 如果动态添加具有Foo
类的元素,它仍然具有20px
的宽度,因为其内联样式尚未设置为覆盖默认CSS规则。
相反,您应该使用addClass
和removeClass
并控制静态CSS中的样式。
您可以更改CSS样式规则。 你需要看看:
document.styleSheets
集合
styleSheet.cssRules
属性(或IE7和IE8的styleSheet.rules)
rule.selectorText
属性
rule.style
属性
例如:
var ss = document.styleSheets[0]; var rules = ss.cssRules || ss.rules; var fooRule = null; for (var i = 0; i < rules.length; i++) { var rule = rules[i]; if (/(^|,) *\.Foo *(,|$)/.test(rule.selectorText)) { fooRule = rule; break; } } fooRule.style.width = "40px";
工作演示: jsfiddle.net/kdp5V
你可以使用jquery手动添加样式到标题:
$('head').append('');
然后在例如这样的事件上改变它:
$(window).resize(function(){ $('#addedCSS').text('.Foo {width:80px;}'); });
是的,您应该使用addClass和removeClass来更改样式。 在你的css中,定义几个不同的类并在它们之间切换。
你应该用jQuery选择一个元素。 您知道自己没有选择CSS类,对吗?
一旦你有一个class =“Foo”的元素,你可以像你一样选择它,并像你想要的那样手动设置css属性,或者你可以像这样使用add class:
$( “富”)addClass( ‘富’)。
当然,当然,因为你选择的是你正在添加的同一个类,所以它并没有真正意义。
我在JQuery API的CSS api帮助中得到了这个例子。
这对我有用 : http : //jsfiddle.net/LHwL2/
如需完整帮助,请访问http://api.jquery.com/css/阅读css api
尝试使用多种样式
.FooSmall { width:20px; } .FooBig { width:40px; } $('#theTarget').removeClass('FooSmall').addClass('FooBig');
这可能对你有用.. $(“。Foo”)。css(“width”,“40px”);