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.

Kezzer
fonte

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.

Erik Bakker
fonte
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');
Ionuț G. Stan
fonte
25

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

Publicitário
fonte
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.
Rehan Shah
fonte