Eu tenho um div com id="a"
que pode ter qualquer número de classes anexadas a ele, de vários grupos. Cada grupo possui um prefixo específico. No javascript, não sei qual turma do grupo está no div. Quero ser capaz de limpar todas as classes com um determinado prefixo e, em seguida, adicionar um novo. Se eu quiser remover todas as classes que começam com "bg", como faço isso? Algo assim, mas realmente funciona:
$("#a").removeClass("bg*");
javascript
jquery
css
Brad
fonte
fonte
Uma divisão regex no limite de palavra
\b
não é a melhor solução para isso:ou como um mixin jQuery:
Atualização ES6 2018:
fonte
filter
deve retornar um booleano. Isso funcionará:var classes = $(e).attr("class").split(" "); $(classes).each(function(i, item) { classes[i] = item.indexOf("prefix") === -1 ? item : "prefix-new"); }); $(e).attr("class", classes.join(" "));
$e.attr('class', $.map($e.attr('class').split(' '), function (klass) { return klass.indexOf(prefix) != 0 ? klass : undefined; }).join(' '));
class="blackRow blackText orangeFace blackHead"
, retornaráclass=" orangeFace "
se você executarremoveClassPrefix("black");
. Eu resolvi esse aparando o resultado assim:el.className = $.trim(classes.join(" "));
.Eu escrevi um plugin jQuery simples - alterClass , que remove a classe curinga. Opcionalmente, adicionará classes também.
fonte
Você não precisa de nenhum código específico do jQuery para lidar com isso. Basta usar um RegExp para substituí-los:
Você pode modificar isso para suportar qualquer prefixo, mas o método mais rápido está acima, pois o RegExp será compilado apenas uma vez:
fonte
Usando a 2ª assinatura de
$.fn.removeClass
:fonte
http://www.mail-archive.com/[email protected]/msg03998.html diz:
... e .removeClass () removeria todas as classes ...
Funciona para mim ;)
Felicidades
fonte
Uma abordagem que eu usaria usando construções jQuery simples e funções de manipulação de array é declarar uma função que leva id do controle e prefixo da classe e excluiu todas as classes. O código está anexado:
Agora, esta função pode ser chamada de qualquer lugar, ao clicar no botão ou a partir do código:
fonte
Eu estava procurando uma solução exatamente para o mesmo problema. Para remover todas as classes começando com o prefixo "fontid_" Depois de ler este artigo, escrevi um pequeno plugin que estou usando agora.
Uso:
fonte
Para navegadores modernos:
fonte
Sei que é uma pergunta antiga, mas descobri uma nova solução e quero saber se ela tem desvantagens?
fonte
Em uma linha ... Remove todas as classes que correspondem a uma expressão regular someRegExp
fonte
A resposta de Prestaul foi útil, mas não funcionou muito bem para mim. A maneira jQuery de selecionar um objeto por id não funcionou. Eu tive que usar
ao invés de
fonte
Eu também uso hífen'- 'e dígitos para o nome da classe. Portanto, minha versão inclui '\ d-'
fonte
fonte
fonte