删除所有以特定字符串开头的类
时间: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, '');