Seleccionar múltiples clases con jQuery

222

He tenido un buen aspecto y parece que no puedo encontrar cómo seleccionar todos los elementos que coinciden con ciertas clases en una declaración de selector jQuery como esta:

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

¿Alguna idea sobre cómo lograr esto? La única otra opción es hacer

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

Pero estoy haciendo esto con bastantes clases, por lo que requiere mucho código.

Kezzer
fuente

Respuestas:

402

Esto debería funcionar:

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

Debe agregar todos los selectores múltiples en el primer argumento a $ (), de lo contrario, le está dando a jQuery un contexto en el que buscar, que no es lo que desea.

Es lo mismo que harías en CSS.

Erik Bakker
fuente
3
¿Qué sucede si quiero hacer coincidir solo cuando cada elemento tiene todas las clases especificadas?
IsmailS
12
Muy bien, tengo este stackoverflow.com/q/1041344/148271 . básicamente tendré que unir todos los selectores para la intersección. Me gusta$(".myClass.myOtherClass")
IsmailS
Más información sobre la agrupación CSS: W3C "Agrupación" .
skrounge
@wal: Esa coma es necesaria también en CSS cuando se apunta a ambas clases. Sin la coma, se referiría a .myOtherClasseso en algún lugar dentro .myClass.
geekuality
esta respuesta no responde la pregunta, de esta manera estás haciendo un OR !!!! no Y !!
Mahmoud Khateeb
26

¿Has probado esto?

$('.myClass, .myOtherClass').removeClass('theclass');
Ionuț G. Stan
fuente
25

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

Adman
fuente
34
Esto es si un elemento HTML tiene varias clases y desea eliminar la clase del elemento solo con todas esas clases. Otros ejemplos eliminarán la clase de cualquier elemento con cualquiera de las clases separadas por comas. Su ejemplo solo funcionaría si mi elemento HTML tuviera ambos , como por ejemplo<div class="myClass myOtherClass theclass">
Kezzer
0
// Due to this Code ): Syntax problem.    
$('.myClass', '.myOtherClass').removeClass('theclass'); 

De acuerdo con la documentación de jQuery: https://api.jquery.com/multiple-selector/

Cuando puede seleccionar múltiples clases de esta manera:

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

al encerrar todos los selectores en un solo '...' 'o comas dobles, "..."

Entonces, en su caso, la forma correcta de llamar a varias clases es:

$('.myClass', '.myOtherClass').removeClass('theclass'); // your Code // Invalid.
$('.myClass , .myOtherClass').removeClass('theclass');  // Correct Code // Is valid.
Rehan Shah
fuente