如何使用jQuery取消设置元素的CSS属性?

时间:2009-01-29 08:41:17

标签: jquery css

如果我使用以下方法在特定元素上设置CSS值:

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

我希望能够取消设置特定于元素的值并使用级联值,如下所示:

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

但是这种语法似乎不起作用 - 这是否可以使用另一种语法?

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

6 个答案:

答案 0 :(得分:117)

来自jQuery docs

  

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

答案 1 :(得分:14)

我认为你也可以这样做:

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

这就是我很久以前用普通旧javascript中的display属性来显示/隐藏字段的原因。

答案 2 :(得分:4)

实际上,我认为不正确的语法(使用null)似乎正在工作 - 我的选择器只是不正确地形成,因此没有产生任何元素。 D'哦!

答案 3 :(得分:3)

试试这个:

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

答案 4 :(得分:0)

对于它的价值而言,这似乎不适用于IE 8中的'过滤器',我不得不使用它(在fadeIn回调中):

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

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

答案 5 :(得分:-2)

如果有帮助,我用双引号添加了一个问题:

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

在一段时间内不起作用

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

有效