Estou trabalhando com jQuery e procurando ver se existe uma maneira fácil de determinar se o elemento tem uma classe CSS específica associada a ele.
Eu tenho o ID do elemento e a classe CSS que estou procurando. Eu só preciso ser capaz de, em uma declaração if, fazer uma comparação com base na existência dessa classe no elemento.
javascript
jquery
css
Mitchel Sellers
fonte
fonte
Respostas:
Use o
hasClass
método:ou
O argumento é (obviamente) uma string que representa a classe que você está verificando e retorna um booleano (para que não suporte encadeamento como a maioria dos métodos jQuery).
Nota: Se você passar um
className
argumento que contenha espaço em branco, ele será comparado literalmente com aclassName
string dos elementos da coleção . Então, se, por exemplo, você tem um elemento,então isso retornará
true
:e estes retornarão
false
:fonte
do FAQ
ou:
fonte
Quanto à negação, se você quiser saber se um elemento não tem classe, pode simplesmente fazer o que Mark disse.
fonte
Sem jQuery:
Ou:
Isso é muito mais rápido que o jQuery!
fonte
...&&!!((' '+e.classname+' ').indexOf(' '+c+' ')+1)
, e não apenas&&!(' '+e.classname+' ').indexOf(' '+c+' ')
?indexOf
retorno-1
é que a classe não existe. Se eu fizer!!-1
, seriatrue
. Desde que eu estou fazendo!!-1+1
, será falso. Uma maneira melhor seria...&&!!~(' '+e.className+' ').indexOf(' '+c+' ')
, mas eu não me lembrava disso na época....&&~(' '+e.className+' ').indexOf(' '+c+' ')
No interesse de ajudar quem chega aqui, mas estava realmente procurando uma maneira livre de jQuery de fazer isso:
fonte
Verifique a página oficial de Perguntas frequentes sobre o jQuery:
Como testar se um elemento tem classe perticular ou não
fonte
fonte
No meu caso, usei a função 'is' a jQuery, adicionei um elemento HTML com diferentes classes css, estava procurando uma classe específica no meio delas, então usei a opção "is" para verificar uma classe adicionada dinamicamente a um elemento html, que já possui outras classes css, é outra boa alternativa.
exemplo simples:
exemplo avançado:
fonte