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


93

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

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

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

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

但是该语法似乎不起作用–是否可以使用其他语法?

编辑:该值不是从父元素继承的-原始值来自元素级选择器。抱歉给您带来任何混乱!

Answers:


140

jQuery文档

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


当我遇到这个问题时,我遇到了这个问题。在我的情况下,我style在标签的属性中设置了css属性,因此该方法不起作用。将样式与.css()方法一起应用,而不是在标签中应用,这样我以后就可以将其删除。
Glenn Moss

14

我认为您也可以:

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

这就是我很久以前display在平原旧javascript中显示/隐藏字段的属性。


4

实际上,我认为不正确的语法(带有null)似乎可以正常工作-我的选择器的格式不正确,因此没有任何元素。天哪!


21
从jquery 1.4.3开始css(..., null)不起作用,css(..., '')应该改用-bugs.jquery.com/ticket/7233
Tim Sylvester


0

值得的是,这似乎无法在IE 8中使用“过滤器”,我不得不使用它(在fadeIn回调中):

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

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


-1

如果有帮助,我会在双引号中添加一个问题:

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

一会儿不起作用

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

作品

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.