如何从所有元素中删除特定的类?

Rez*_*eri 7 javascript jquery

如何从页面元素中删除给定的类?

例:

<div class="fan light"> ... </div>
<div class="light"> ... </div>
<h3 class="seahorse light"> SomeHeading </h3>
Run Code Online (Sandbox Code Playgroud)

我想light从页面的所有元素中删除该类!

我如何使用jquery或javascript做到这一点?

Poi*_*nty 36

只要找到所有的元素有类,并将其删除:

$(".light").removeClass("light");
Run Code Online (Sandbox Code Playgroud)

使用纯JavaScript:

var lights = document.getElementsByClassName("light");
while (lights.length)
    lights[0].className = lights[0].className.replace(/\blight\b/g, "");
Run Code Online (Sandbox Code Playgroud)

(这取决于浏览器支持.getElementsByClassName().)请注意,循环看起来有点奇怪,总是在元素列表的元素0上操作.这是因为从类似API返回的列表.getElementsByClassName()实时的 - 它们会更改以反映DOM中的更改.从元素中删除类时,它不再位于具有该类名的元素列表中.因此,通过从列表中的第一个元素中删除该类,该元素就会消失.最终列表将为空.(我一直认为这是一种奇怪的行为,公然违反了最不惊讶的原则,但你去了.)

最后,在评论中指出,较新的浏览器(IE10 +)支持一个名为的DOM元素属性.classList.它是一个类名列表,而且它支持一些方便的方法.特别是:

var lights = document.getElementsByClassName("light");
while (lights.length)
    lights[0].classList.remove("light");
Run Code Online (Sandbox Code Playgroud)

  • 我也有同样的情况,但由于我的工作刚刚放弃了对 IE9 的支持,我正处于一个奇妙的世界中。看看我以前从未使用过的所有奇妙东西! (2认同)