jQuery:暂时更改样式然后重置为原始类

Pro*_*ool 56 css jquery

假设我有一个名为testThing的类:

.testThing
{
   background-color:#000000;
   float:left;
   height:50px;
   width:50px;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够在单击按钮时测试背景颜色更改为该类的任何控件:

function setColor(someColor) 
{
   jQuery('.testThing').css('background-color', someColor);
}
Run Code Online (Sandbox Code Playgroud)

但我希望用户能够根据类的内容重置为原始颜色(另一个按钮单击):

function resetClass()
{
   jQuery('#currentColor').removeClass('testThing');
   jQuery('#currentColor').addClass('testThing');
}
Run Code Online (Sandbox Code Playgroud)

看起来这样可行(Albiet不是最好的方法)但控件的背景颜色不会重置为该类中保存的原始值.

现在要么我需要弄清楚为什么删除添加不会重置它或只是一个更好的方法来做...看到删除和读取类似乎很愚蠢...

小智 112

我知道这是旧的,但您可以将值设置为空字符串以删除您的自定义样式,如下所示:

// set
$(this).css('background-color', '#000000');

// reset
$(this).css('background-color', '');
Run Code Online (Sandbox Code Playgroud)


Gab*_*yer 78

Jquery在style属性中添加了CSS,它比CSS文件中的内容具有更高的优先级.您没有使用该函数更改CSS文档,因此添加,删除和添加类没有任何效果,因为它根本没有被修改!

您应该使用相同的功能,但这次将背景颜色设置为黑色.

function reset(this)
{
  $(this).css('background-color', '#000000');
}
Run Code Online (Sandbox Code Playgroud)

或者只是删除style属性

function reset(this)
{
  $(this).removeAttr('style');
}
Run Code Online (Sandbox Code Playgroud)

  • 这只适用于您没有其他想要设置的样式设置的情况 (16认同)
  • 请记住,removeAttribute()不再适用于jquery而是使用removeAttr()! (8认同)