删除所有以特定字符串开头的类

时间:2020-03-05 18:51:54  来源:igfitidea点击:

我有一个带有id =" a"的div,它可能有来自多个组的任何数量的类。每个组都有一个特定的前缀。在javascript中,我不知道该组中的哪个类位于div上。我希望能够清除具有给定前缀的所有类,然后添加一个新的类。如果要删除所有以" bg"开头的类,该怎么做?像这样的东西,但实际上有效:

$("#a").removeClass("bg*");

解决方案

回答

我们不需要任何jQuery特定代码即可处理此问题。只需使用RegExp来替换它们:

$("#a").className = $("#a").className.replace(/\bbg.*?\b/g, '');

我们可以修改它以支持任何前缀,但是上面的方法更快,因为RegExp只会被编译一次:

function removeClassByPrefix(el, prefix) {
    var regx = new RegExp('\b' + prefix + '.*?\b', 'g');
    el.className = el.className.replace(regx, '');
    return el;
}

回答

Prestaul的回答很有帮助,但对我而言并不奏效。通过id选择对象的jQuery方法无效。我不得不用

document.getElementById("a").className

代替

$("#a").className

回答

使用jQuery,实际的DOM元素的索引为零,这应该可以工作

$('#a')[0].className = $('#a')[0].className.replace(/\bbg.*?\b/g, '');

回答

http://www.mail-archive.com/[email protected]/msg03998.html说:

...和.removeClass()会删除所有类...

这个对我有用 ;)

干杯

回答

我还使用连字符'-'和数字作为类名。所以我的版本包括'\ d-'

$('#a')[0].className = $('#a')[0].className.replace(/\bbg.\d-*?\b/g, '');