Javascript 在jQuery中更改类名

Javascript 在jQuery中更改类名,javascript,jquery,html,class,Javascript,Jquery,Html,Class,我知道我们可以做很多事情,比如更改元素的当前样式,或者更改其文本等。但是,我们如何使用jQuery更改类的名称呢 例如,以下CSS文件有两种不同的样式: .roundedCorners { /* code for roundedCorners */ } .NotSoRoundedCorners { /* code for NotSoRoundedCorners */ } 按钮看起来像: <input type="submit" class="NotSoRoundedCorner

我知道我们可以做很多事情,比如更改元素的当前样式,或者更改其文本等。但是,我们如何使用jQuery更改类的名称呢

例如,以下CSS文件有两种不同的样式:

.roundedCorners {
  /* code for roundedCorners */
}

.NotSoRoundedCorners {
  /* code for NotSoRoundedCorners */
}
按钮看起来像:

<input type="submit" class="NotSoRoundedCorners" value="Turn me on!" />

但是,如果一个元素有许多样式需要更改怎么办。为什么不在CSS文件中有两个样式定义,当我们需要更改样式时,只需将元素的类名更改为其他样式?

是的。通过使用attr方法

$('.NotSoRoundedCorners').attr('class', 'RoundedCorners');
真的,为什么不呢

$('.closer').addClass("roundedCorners);
$('.closer').removeClass("NotSoRoundedCorners );
您可以使用:

$('.closer').toggleClass('roundedCorners').toggleClass('NotSoRoundedCorners')


您应该调用jQuery的方法

使用它,您可以显式地删除一个类并将其添加到节点中,而其他类则保持不变

$('.closer').toggleClass('roundedCorners NotSoRoundedCornders');


这里的许多人建议使用
.attr()
,但这将替换整个
className
属性,因此将覆盖/删除任何给定的css类。我不认为这是正确的方法。

$.addClass和$.removeClass?我觉得把它发布到s.O.Use
.toggleClass()
太容易了。在您的例子中,
$('.closer').toggleClass('roundedCorners NotSoRoundedCornders')@jAndy:这实际上是最好的答案;)@是的,更改类名是最好的方法。你的问题是什么?@Felix Kling-谢谢,是的,问题是我甚至不确定你是否可以更改类名。+1最佳答案:)有一些特殊的方法来处理类,所以它们是可行的。你得到了dude最佳答案我的+1我不知道这个方法,绝对是最好的方法。这里不需要多次调用
.toggleClass
。@jAndy,我注意到你在回答中写了这个。我觉得事后更新我的答案是“偷盗”,但你当然是对的。你正在覆盖所有可能设置的类。jAndy是对的。这将清除“class”属性中的所有内容,最终只会得到“RoundedCorners”
。toggleClass()
为您准备。您正在覆盖所有可能设置的类。正如J.T.S
所引用的,我们需要更改样式,只需将元素的类名更改为其他样式即可?
$('.NotSoRoundedCorners').attr('class', 'RoundedCorners');
$('.closer').toggleClass('roundedCorners').toggleClass('NotSoRoundedCorners')
$('.closer').removeClass('roundedCorners');
$('.closer').addClass('NotSoRoundedCorners')
$('.closer').removeClass('roundedCorners');
$('.closer').addClass('NotSoRoundedCorners')
$('.closer').toggleClass('roundedCorners NotSoRoundedCornders');