2016-10-09 2 views
0

Есть ли простой способ удалить класс из элемента, когда я не знаю точное имя класса (только префикс)?Удалить все классы CSS, названные как данный шаблон?

Сначала это может показаться странным, поэтому я приведу пример, чтобы уточнить: кнопка 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-*'); 

Есть встроенный способ сделать это?

+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>

+0

Хорошая альтернатива - спасибо за ваши усилия - upvoted! Тем не менее, лично я собираюсь использовать встроенный способ, как описано в связанном дубликате. –

+0

Yeh, просто прочитайте этот ответ, и это намного лучшее решение –

Смежные вопросы