js php unset,javascript - 如何删除添加了.css()函数的样式?

javascript - 如何删除添加了.css()函数的样式?

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

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

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

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

Alex asked 2019-01-16T23:10:26Z

17个解决方案

1199 votes

将属性更改为空字符串似乎可以完成此任务。

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

answered 2019-01-16T23:10:40Z

505 votes

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

removeAttr( 'style' );

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

ThinkingStiff answered 2019-01-16T23:11:09Z

160 votes

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

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

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

查看MDN上CSS属性的初始值。此处的默认值为unset.您还可以使用unset为多个CSS属性从其父级继承该属性。 在CSS3 / CSS4中,您还可以使用unset,unset或unset,但这些关键字可能具有有限的浏览器支持。

2.删除CSS属性

空字符串删除CSS属性,即

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

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

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

3.删除元素的整个样式

.removeAttr("style")

KrisWebDev answered 2019-01-16T23:12:23Z

43 votes

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

var bodyStyle = document.body.style;

if (bodyStyle.removeAttribute)

bodyStyle.removeAttribute('background-color');

else

bodyStyle.removeProperty('background-color');

Marwan answered 2019-01-16T23:12:50Z

15 votes

这些jQuery函数中的任何一个都应该工作:

$("#element").removeAttr("style");

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

Mahesh Gaikwad answered 2019-01-16T23:13:13Z

15 votes

这将删除完整标记:

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

SURJEET SINGH Bisht answered 2019-01-16T23:13:35Z

5 votes

怎么样的:

var myCss = $(element).attr('css');

myCss = myCss.replace('background-color: '+$(element).css('background-color')+';', '');

if(myCss == '') {

$(element).removeAttr('css');

} else {

$(element).attr('css', myCss);

}

nclu answered 2019-01-16T23:13:57Z

5 votes

试试这个:

$('#divID').css({"background":"none"});// remove existing

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

谢谢

uihelp answered 2019-01-16T23:14:17Z

5 votes

只是使用:

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

要么

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

Alberto Cerqueira answered 2019-01-16T23:14:40Z

4 votes

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

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

然后替换为:

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

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

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

Luis answered 2019-01-16T23:15:15Z

4 votes

使用我的插件:

$.fn.removeCss=function(all){

if(all===true){

$(this).removeAttr('class');

}

return $(this).removeAttr('style')

}

对于您的情况,请按以下方式使用它:

$().removeCss();

要么

$().removeCss(false);

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

$().removeCss(true);

Abdennour TOUMI answered 2019-01-16T23:15:51Z

1 votes

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

(如果它存在则删除该类,如果不存在则添加它。)

在处理布局问题时,添加/删除类也不太容易改变/排除故障(而不是试图找出特定样式消失的原因。)

Neil Girardi answered 2019-01-16T23:16:27Z

1 votes

let el = document.querySelector(element)

let styles = el.getAttribute('style')

el.setAttribute('style', styles.replace('width: 100%', ''))

Kamil' Ocean answered 2019-01-16T23:16:43Z

0 votes

这一个也工作!!

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

dazzafact answered 2019-01-16T23:17:05Z

0 votes

这比其他一些解决方案更复杂,但可能在场景中提供更多灵活性:

1)创建一个类定义来隔离(封装)您想要选择性地应用/删除的样式。 它可以是空的(对于这种情况,可能应该是):

.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/]

注意事项:

没有经过广泛测试。

不能在新值中包含!important或其他指令。 任何这样的现有指令都将通过这种操纵而丢失。

只有更改首先发现了styleSelector的出现。 不添加或删除整个样式,但这可以通过更复杂的东西来完成。

任何无效/不可用的值都将被忽略或抛出错误。

在Chrome中(至少),非本地(如跨站点)CSS规则不会通过document.styleSheets对象公开,因此这对它们不起作用。 必须添加本地覆盖并操纵它,记住此代码的“首次发现”行为。

document.styleSheets对一般的操作并不是特别友好,不要指望这个用于积极使用。

以这种方式隔离样式就是CSS的全部内容,即使操纵它也不是。 操纵CSS规则不是jQuery的全部,jQuery操纵DOM元素,并使用CSS选择器来完成它。

dkloke answered 2019-01-16T23:18:46Z

0 votes

简单在Web开发中很便宜。 我建议在删除特定样式时使用空字符串

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

Victor Michael answered 2019-01-16T23:19:11Z

0 votes

试试这个

$(".ClassName").css('color','');

Or

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

Basant Rules answered 2019-01-16T23:19:28Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值