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.

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.


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


25

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


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.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.