Bem, eu sei que com algumas ações jQuery, podemos adicionar muitas classes a um div específico:
<div class="cleanstate"></div>
Digamos que, com alguns cliques e outras coisas, o div receba muitas classes
<div class="cleanstate bgred paddingleft allcaptions ..."></div>
Então, como posso remover todas as classes, exceto uma? A única ideia que tive é esta:
$('#container div.cleanstate').removeClass().addClass('cleanstate');
Enquanto removeClass()
mata todas as classes, o div se confunde, mas somando logo depois addClass('cleanstate')
volta ao normal. A outra solução é colocar um atributo ID com as propriedades CSS básicas para que não sejam excluídas, o que também melhora o desempenho, mas eu só quero saber outra solução para me livrar de todos, exceto ".cleanstate"
Estou perguntando isso porque, no script real, a div sofre várias mudanças de classes.
javascript
jquery
class
addclass
removeclass
DarkGhostHunter
fonte
fonte
" "
(espaço) e decidir para cada uma se deseja ou não deletar?Respostas:
Em vez de fazer isso em 2 etapas, você pode simplesmente redefinir o valor inteiro de uma vez
attr
, substituindo todos os valores da classe pela classe desejada:Amostra: http://jsfiddle.net/jtmKK/1/
fonte
Use attr para definir diretamente o atributo class para o valor específico que você deseja:
fonte
Com JavaScript simples e não JQuery:
fonte
Às vezes você precisa manter algumas das classes devido à animação CSS, porque assim que você remove todas as classes, a animação pode não funcionar. Em vez disso, você pode manter algumas classes e remover o resto assim:
fonte
$('#container div.cleanstate').removeClass('removethis removethat').addClass('cleanstate');
. Tentei editar, mas, mais uma vez, stackoverflow não deixou você ser útil.em relação à resposta de robs e para fins de integridade, você também pode usar o querySelector com vanilla
fonte
E se você quiser manter uma ou mais aulas e quiser aulas exceto essas. Essa solução não funcionaria onde você não deseja remover todas as classes e adicionar essa classe perticular novamente. Usar attr e removeClass () redefine todas as classes na primeira instância e, em seguida, anexa essa classe perticular novamente. Se você usar alguma animação em classes que estão sendo redefinidas novamente, ela falhará.
Se você deseja simplesmente remover todas as classes, exceto algumas classes, isso é para você. Minha solução é para: removeAllExceptThese
Isso não irá redefinir todas as classes, apenas removerá o necessário.
Eu precisava disso no meu projeto onde eu precisava remover apenas classes não correspondentes.
Você pode usar isso
$(".third").removeClassesExceptThese(["first", "second"]);
fonte