2009-01-29 44 views
73

如果我用设置一个特定的元素上的CSS值:如何使用jQuery取消元素的CSS属性?

$('#element').css('background-color', '#ccc'); 

我希望能够取消设置特定元素的值,并使用级联值,沿着线:

$('#element').css('background-color', null); 

但是,这种语法似乎不工作 - 这可能使用另一种语法?

在此先感谢!

编辑:该值不是从父元素继承的 - 原始值来自元素级选择器。对不起,有任何困惑!

回答

107

jQuery docs

的样式属性的值设置为空字符串 - 例如$('#mydiv').css('color', '') - 如果元素已经直接应用,则将其从元素中移除,无论是在HTML样式属性中,通过jQuery的.css()方法,还是通过对style属性的直接DOM操作。但是,它不会删除已在样式表或<style>元素中应用CSS规则的样式。

3

试试这个:

$('#element').css('background-color', 'inherit'); 
+1

不幸的是,继承不是我正在寻找的行为:“该属性采用与该元素父级的属性相同的计算值”来自http://www.w3.org/TR/CSS2/cascade.html – cdleary 2009-01-29 09:02:32

4

其实,我认为语法是不正确的(与null)似乎是工作 - 我的选择只是不当形成的,从而产生没有元素。 D'哦!

+20

从jquery 1.4.3`css(...,null)`不起作用,`css(...,'')`应该用来代替 - http://bugs.jquery.com/ticket/ 7233 – 2011-04-04 23:37:43

+0

@cdleary您应该更正您的答案或选择正确的答案。 – 2014-07-25 09:42:00

10

我想你也可以这样做:

$('#element').css('background-color', ''); 

这就是我用来做一个很久以前的display物业以纯老JavaScript来显示/隐藏字段。

0

对于它的价值,这似乎不是在IE 8中运行的“过滤器”,我只好用这种(以淡入回调):显然

$(this).attr('style', $(this).attr('style').replace(/\bfilter:\s*;*/, ''));

,我需要删除一个空的内联过滤器声明,以便CSS可以生效;还有其他内联规则,所以我不能删除style属性。

相关问题