如何删除使用 .css() 函数添加的样式?

IT技术 javascript jquery css
2021-02-10 18:16:19

我正在使用jQuery更改CSS并且我希望删除我根据输入值添加的样式:

if(color != '000000') $("body").css("background-color", color); else // remove style ?

我怎样才能做到这一点?
请注意,每当使用颜色选择器选择颜色时(即当鼠标移动到色轮上时),上面的行就会运行。

第二个注意事项:我不能这样做,css("background-color", "none")因为它会从CSS文件中删除默认样式
我只想删除jQuerybackground-color添加内联样式

6个回答

将属性更改为空字符串似乎可以完成这项工作:

$.css("background-color", "");
你们不能设定为客户开发的任何解决方案的要求。如果该客户想要或需要对较旧浏览器的支持,那么提供它就是您的工作。你们谈论“谁在乎”会给真正的工程师带来坏名声。
2021-03-25 18:16:19
我必须在这里支持@baacke。我们的客户仍然有 IE6(!!) 的官方最低要求。问题是,他们的客户遍布世界各地,包括欠发达国家。“客户的客户”可能使用非常旧的计算机与我们的客户做生意。所以旧浏览器必须至少得到最低限度的支持,否则他们可能会失去业务......
2021-03-26 18:16:19

接受的答案有效,但style在我的测试中在 DOM 上留下了一个空属性。没什么大不了的,但这消除了一切:

removeAttr( 'style' );

这假设您要删除所有动态样式并返回到样式表样式。

有几种方法可以使用 jQuery 删除 CSS 属性:

1. 将 CSS 属性设置为其默认(初始)值

.css("background-color", "transparent")

在 MDN 上查看CSS 属性初始值这里的默认值为transparent您还可以使用inherit多个 CSS 属性来从其父级继承该属性。在 CSS3/CSS4 中,您也可以使用initial,revert或者unset这些关键字的浏览器支持可能有限。

2. 移除 CSS 属性

空字符串删除 CSS 属性,即

.css("background-color","")

但请注意,正如jQuery .css() 文档中所指定的那样,这会删除该属性,但对于某些 CSS 速记属性(包括背景,它与 IE8 存在兼容性问题

将样式属性的值设置为空字符串 - 例如 $('#mydiv').css('color', '') - 如果该属性已被直接应用,则从元素中删除该属性,无论是在 HTML 样式中属性,通过 jQuery 的 .css() 方法,或通过样式属性的直接 DOM 操作。但是,它不会删除已在样式表或元素中使用 CSS 规则应用的样式。警告:一个值得注意的例外是,对于 IE 8 及更低版本,删除诸如边框或背景之类的速记属性将从元素中完全删除该样式,而不管在样式表或元素中设置了什么

3. 移除元素的整体样式

.removeAttr("style")

我得到了用纯 JavaScript 删除样式属性的方法,只是为了让您了解纯 JavaScript 的方式

var bodyStyle = document.body.style;
if (bodyStyle.removeAttribute)
    bodyStyle.removeAttribute('background-color');
else        
    bodyStyle.removeProperty('background-color');
因为 jquery 不是万能的,因为她或者我应该说我们每个开发人员都应该知道兼容性意味着什么以及如何使用 JavaScript 等核心语言来做这样的事情,也许这是我的理论,我已经创建了自己的框架根据我对核心 JavaScript 的了解,我拒绝使用其他东西,我有自己的概念和思维方式:) 顺便感谢您的 (-) 我只需要增值:) 顺便说一句,这家伙不是一个人她是一个她叫亚历克斯
2021-03-19 18:16:19

这将删除完整的标签:

  $("body").removeAttr("style");