Удалить все классы, которые начинаются с определенной строки - PullRequest
97 голосов
/ 12 сентября 2008

У меня есть div с id="a", к которому может быть прикреплено любое количество классов из нескольких групп. У каждой группы есть определенный префикс. В javascript я не знаю, какой класс из группы находится на div. Я хочу иметь возможность очистить все классы с заданным префиксом, а затем добавить новый. Если я хочу удалить все классы, начинающиеся с «bg», как мне это сделать? Примерно так, но на самом деле это работает:

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

Ответы [ 15 ]

0 голосов
/ 03 июля 2017

в одну строку ... Удаляет все классы, которые соответствуют регулярному выражению someRegExp

$('#my_element_id').removeClass( function() { return (this.className.match(/someRegExp/g) || []).join(' ').replace(prog.status.toLowerCase(),'');});
0 голосов
/ 13 февраля 2013
$("#element").removeAttr("class").addClass("yourClass");
0 голосов
/ 19 декабря 2012
(function($)
{
    return this.each(function()
    {
        var classes = $(this).attr('class');

        if(!classes || !regex) return false;

        var classArray = [];

        classes = classes.split(' ');

        for(var i=0, len=classes.length; i<len; i++) if(!classes[i].match(regex)) classArray.push(classes[i]);

        $(this).attr('class', classArray.join(' '));
    });
})(jQuery);
0 голосов
/ 20 июля 2010

Я также использую дефис и цифры в качестве имени класса. Так что моя версия включает в себя '\ d -'

$('#a')[0].className = $('#a')[0].className.replace(/\bbg.\d-*?\b/g, '');
0 голосов
/ 12 сентября 2008

Ответ Престола был полезен, но он не совсем сработал для меня. Способ jQuery для выбора объекта по идентификатору не работал. Я должен был использовать

document.getElementById("a").className

вместо

$("#a").className
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...