Selezione di più classi con jQuery


222

Ho avuto una buona occhiata e non riesco a scoprire come selezionare tutti gli elementi corrispondenti a determinate classi in un'istruzione selettore jQuery come questa:

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

Qualche idea su come raggiungere questo obiettivo? L'unica altra opzione è fare

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

Ma lo sto facendo con alcune classi, quindi richiede molto codice.

Risposte:


402

Questo dovrebbe funzionare:

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

Devi aggiungere tutti i selettori multipli nel primo argomento a $ (), altrimenti stai dando a jQuery un contesto in cui cercare, che non è quello che desideri.

È lo stesso che faresti nei CSS.


3
Cosa succede se voglio abbinarlo solo quando ciascuno degli elementi ha tutte le classi specificate?
IsmailS

12
Bene, ho preso questo stackoverflow.com/q/1041344/148271 . in pratica dovrò unire tutto il selettore per l'intersezione. Mi piace$(".myClass.myOtherClass")
IsmailS,

Altre informazioni sul raggruppamento CSS: W3C "Raggruppamento" .
skrounge

@wal: questa virgola è necessaria anche nei CSS quando si punta a entrambe le classi. Senza la virgola a cui farebbe riferimento, si .myOtherClasstrova da qualche parte all'interno .myClass.
geekuality

questa risposta non risponde alla domanda, in questo modo stai facendo un OR !!!! non AND !!
Mahmoud Khateeb,


25

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


34
Questo è se un elemento HTML ha più classi e si desidera rimuovere la classe per l'elemento solo con tutte quelle classi. Altri esempi rimuoveranno la classe da qualsiasi elemento con una qualsiasi delle classi separate da virgola. Il tuo esempio funzionerebbe solo se il mio elemento HTML avesse entrambi , come<div class="myClass myOtherClass theclass">
Kezzer,

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

Secondo la documentazione di jQuery: https://api.jquery.com/multiple-selector/

Quando è possibile selezionare più classi in questo modo:

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

racchiudendo tutti i selettori in una '...' 'singola o doppia virgola, "..."

Quindi nel tuo caso il modo corretto di chiamare più classi è:

$('.myClass', '.myOtherClass').removeClass('theclass'); // your Code // Invalid.
$('.myClass , .myOtherClass').removeClass('theclass');  // Correct Code // Is valid.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.