Selecionando Várias Classes com jQuery


222

Eu dei uma boa olhada e não consigo descobrir como selecionar todos os elementos correspondentes a determinadas classes em uma instrução do seletor jQuery, como esta:

$('.myClass', '.myOtherClass').removeClass('theclass');

Alguma idéia de como conseguir isso? A única outra opção é fazer

$('.myClass').removeClass('theclass');
$('.myOtherClass').removeClass('theclass');

Mas estou fazendo isso com algumas classes, por isso requer muito código.

Respostas:


402

Isso deve funcionar:

$('.myClass, .myOtherClass').removeClass('theclass');

Você deve adicionar os vários seletores todos no primeiro argumento a $ (), caso contrário, você estará fornecendo ao jQuery um contexto no qual pesquisar, que não é o que você deseja.

É o mesmo que você faria em CSS.


3
E se eu quiser correspondê-lo somente quando cada um dos elementos tiver todas as classes especificadas?
IsmailS

12
Tudo bem, eu tenho esse stackoverflow.com/q/1041344/148271 . basicamente terei que juntar todo o seletor para interseção. Como$(".myClass.myOtherClass")
IsmailS 2/11/13

Mais sobre agrupamento de CSS: W3C "Agrupamento" .
Skrounge

@wal: Essa vírgula é necessária também em CSS ao apontar para as duas classes. Sem a vírgula, a referência a .myOtherClassisso está em algum lugar dentro .myClass.
Geekuality

esta resposta não responde à pergunta, assim você está fazendo um OR !!!! não e !!
Mahmoud Khateeb

26

Você já tentou isso?

$('.myClass, .myOtherClass').removeClass('theclass');

25

eu uso $('.myClass.myOtherClass').removeClass('theclass');


34
Isso ocorre se um elemento HTML tiver várias classes e você desejar remover a classe do elemento apenas com todas essas classes. Outros exemplos removerão a classe de qualquer elemento com qualquer uma das classes separadas por vírgula. Seu exemplo só funcionaria se meu elemento HTML tivesse os dois , como<div class="myClass myOtherClass theclass">
Kezzer 30/01

0
// Due to this Code ): Syntax problem.    
$('.myClass', '.myOtherClass').removeClass('theclass'); 

De acordo com a documentação do jQuery: https://api.jquery.com/multiple-selector/

Quando pode selecionar várias classes desta maneira:

jQuery(“selector1, selector2, selectorN”) // double Commas. // IS valid.
jQuery('selector1, selector2, selectorN') // single Commas. // Is valid.

colocando todos os seletores em um único '...' 'ou vírgulas duplas, "..."

Portanto, no seu caso, a maneira correta de chamar várias classes é:

$('.myClass', '.myOtherClass').removeClass('theclass'); // your Code // Invalid.
$('.myClass , .myOtherClass').removeClass('theclass');  // Correct Code // Is valid.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.