删除所有命名为给定模式的CSS类?

时间:2016-10-09 19:23:23

标签: jquery

当我不知道确切的类名(只有前缀)时,是否有一种从元素中删除类的简单方法?

起初这可能听起来很奇怪,所以我举一个例子来澄清:一个Bootstrap按钮可能有btn-primary xor btn-success xor btn-danger xor ...已应用。我想删除这个类(无论哪个)并应用一个新类。

目前我有:

let btnClasses = [ 'btn-primary', 'btn-success', ... ];
$.each(btnClasses, function(i, x) {
    $(myElem).removeClass(x);
});

我喜欢有类似的东西:

$(myElem).removeClass('btn-*');

是否有内置方法可以这样做?

1 个答案:

答案 0 :(得分:1)

您可以为jQuery编写自己的插件。它的名称会有所不同,但它是单向的。

$.fn.removeClassRegex = function (pattern) {
  var element = $(this);
  var classNames = element.attr('class').split(' ');
  $(classNames).each(function (key, value) {
    if (value.match(pattern)) {
      element.removeClass(value);
    }
  });
}

$('div').removeClassRegex('test-[a-z]');
console.log($('div').attr('class'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test-bar foo">
</div>