如何使用jQuery移除以“color”开头的特定类?

9

我想要移除以 "color" 开头的类名。这些类名是动态添加的,我不知道有多少个类名以 "color" 开头。

<div id="sample" class="color1 orange color2 color3 blue"></div>

Jquery

$("#sample").removeClass("[class^='color']");

但是它没有起作用。有任何帮助吗?
2个回答

10

循环遍历所有类并测试它们是否以color开头。

var classes = $("#sample").attr("class").split(' ');
$.each(classes, function(i, c) {
    if (c.indexOf("color") == 0) {
        $("#sample").removeClass(c);
    }
});

7

这将在此处起作用

$('div')[0].className = $('div')[0].className.replace(/\bcolor.*?\b/g, '');

或者

 $('div').attr('class',$('div').attr('class').replace(/\bcolor.*?\b/g, ''));

基本上,我在这里获取classes中的每个单词,并替换任何以color开头的内容。

2
不错的解决方案,但是能否加上一些解释呢? - Matt
也许对于这个帖子的作者来说不是问题,但对于 class="color-blue" 就行不通了,因为 \b 会停在 - 处。 - Barmar
既然这是一个jQuery问题,为什么不使用attr('class')呢? - iCollect.it Ltd
@TrueBlueAussie 也加了这个,但我不知道哪个更好。 - Mritunjay
1
$('div').attr('class',$('div').attr('class').replace(/\bcolor.*?\b/g, '')); 这样就可以了...因为你只处理一个元素,所以不需要函数。 - iCollect.it Ltd
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接