jQuery – 删除添加了.css()函数的样式

我正在改变CSS与jQuery,我希望删除我添加的样式基于input值:

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

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

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

将属性更改为空string似乎可以完成这项工作。

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

接受的答案工作,但在我的testing在DOM上留下一个空的style属性。 没什么大不了的,但是这一切都消除了:

 removeAttr( 'style' ); 

这假定您想要删除所有dynamic样式并返回到样式表样式。

有几种使用jQuery去除CSS属性的方法:

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

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

查看MDN的CSS属性的初始值 。 这里的默认值是transparent 。 您还可以使用多个CSS属性的inheritance来从父级inheritance属性。 在CSS3 / CSS4中,您也可以使用initialrevertunset但是这些关键字可能只有有限的浏览器支持。

2.删除CSS属性

一个空string删除CSS属性,即

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

但是要注意,正如jQuery .css()文档中所指定的那样,这将删除属性,但它与IE8对于某些CSS速记属性(包括背景)具有兼容性问题。

将样式属性的值设置为一个空string – 例如$('#mydiv')。css('color','') – 如果元素已经被直接应用,属性,通过jQuery的.css()方法,或者通过对style属性的直接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函数中的任何一个都可以工作:

 $("#element").removeAttr("style"); $("#element").removeAttr("background-color") 

这将删除完整的标签:

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

感觉如何?

 var myCss = $(element).attr('css'); myCss = myCss.replace('background-color: '+$(element).css('background-color')+';', ''); if(myCss == '') { $(element).removeAttr('css'); } else { $(element).attr('css', myCss); } 

尝试这个:

 $('#divID').css({"background":"none"});// remove existing $('#divID').css({"background":"#bada55"});// add new color here. 

谢谢

如果您使用CSS样式,则可以使用:

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

然后replace为:

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

如果您不使用CSS样式,并且在HTML元素中有属性,则可以使用:

 $("#element").attr("style.background-color",color); 

使用我的插件:

 $.fn.removeCss=function(all){ if(all===true){ $(this).removeAttr('class'); } return $(this).removeAttr('style') } 

对于你的情况,使用它如下:

 $(<mySelector>).removeCss(); 

要么

 $(<mySelector>).removeCss(false); 

如果你想删除其类中定义的CSS:

 $(<mySelector>).removeCss(true); 

只要使用:

 $('.tag-class').removeAttr('style'); 

要么

 $('#tag-id').removeAttr('style'); 

这一个也工作!

 $elem.attr('style',''); 

这比其他一些解决scheme更为复杂,但可以在场景中提供更多的灵活性:

1)做一个类定义来隔离(封装)你想要select的应用/删除的样式。 它可以是空的(在这种情况下,可能应该是):

 .myColor {} 

2)使用这个代码,基于http://jsfiddle.net/kdp5V/167/从这个答案; gilly3 :

 function changeCSSRule(styleSelector,property,value) { for (var ssIdx = 0; ssIdx < document.styleSheets.length; ssIdx++) { var ss = document.styleSheets[ssIdx]; var rules = ss.cssRules || ss.rules; if(rules){ for (var ruleIdx = 0; ruleIdx < rules.length; ruleIdx++) { var rule = rules[ruleIdx]; if (rule.selectorText == styleSelector) { if(typeof value == 'undefined' || !value){ rule.style.removeProperty(property); } else { rule.style.setProperty(property,value); } return; // stops at FIRST occurrence of this styleSelector } } } } } 

用法示例: http : //jsfiddle.net/qvkwhtow/

注意事项:

  • 没有广泛的testing。
  • 不能在新的价值中包含重要或其他指令。 任何这样的现有指令将通过这种操作而丢失。
  • 只有首先发现更改styleSelector的发生。 不添加或删除整个样式,但可以用更精细的东西来完成。
  • 任何无效/不可用的值将被忽略或抛出错误。
  • 在Chrome(至less)中,非本地(如跨站点)的CSS规则不会通过document.styleSheets对象公开,所以这不适用于它们。 必须添加一个本地覆盖和操作,记住这个代码的“首先发现”的行为。
  • document.styleSheets对于一般的操作并不是特别的友好,不要期望它能够用于积极的使用。

以这种方式分离样式是CSS的全部,即使操纵它也不是。 操纵CSS规则并不是jQuery的全部内容,jQuery操作DOM元素,并使用CSSselect器来实现。

网站开发简单便宜。 我build议在删除特定的样式时使用空string

 $(element).style.attr = ' '; 

尝试这个

 $(".ClassName").css('color',''); Or $("#Idname").css('color',''); 

为什么不制作你想要删除CSS类的样式? 现在你可以使用: .removeClass() 。 这也打开了使用的可能性: .toggleClass()

(删除类,如果它不存在)。

在处理布局问题时,添加/删除类也不那么容易混淆,无法改变/排除故障(而不是试图找出特定样式为什么消失)。