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

标签 javascript jquery css

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

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

最佳答案

在单词边界 \b 上的正则表达式拆分不是最好的解决方案:

var prefix = "prefix";
var classes = el.className.split(" ").filter(function(c) {
    return c.lastIndexOf(prefix, 0) !== 0;
});
el.className = classes.join(" ").trim();

或作为 jQuery 混合:

$.fn.removeClassPrefix = function(prefix) {
    this.each(function(i, el) {
        var classes = el.className.split(" ").filter(function(c) {
            return c.lastIndexOf(prefix, 0) !== 0;
        });
        el.className = $.trim(classes.join(" "));
    });
    return this;
};

2018 ES6 更新:

const prefix = "prefix";
const classes = el.className.split(" ").filter(c => !c.startsWith(prefix));
el.className = classes.join(" ").trim();

关于javascript - 删除以特定字符串开头的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57812/

相关文章:

javascript - 将一个字符放入具有指定类别的空 div-s 中

javascript - 是否可以从 JavaScript 调用 hamlet?

javascript - 向 django 表单库渲染的 <options> 添加数据属性

c# - 如何让 ASP.NET 页面知道文件何时可以从服务器下载

javascript - 我加载这个 js 数组时做错了什么?

html - 使用 CSS 的内联 block 和文本换行

javascript - 使用 defaultExtension 为 systemjs 配置 Angular2 库

javascript - JQuery 值没有改变

javascript - 旋转一束绝对定位的 div - <edited> 而不将它们放入容器中

html - 将导航栏颜色混合到背景颜色(渐变?)