Wybieranie wielu klas za pomocą jQuery

222

Dobrze się przyjrzałem i nie mogę się dowiedzieć, jak wybrać wszystkie elementy pasujące do niektórych klas w jednej instrukcji selektora jQuery, takiej jak ta:

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

Wszelkie pomysły, jak to osiągnąć? Jedyną inną opcją jest zrobienie

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

Ale robię to z kilkoma klasami, więc wymaga dużo kodu.

Kezzer
źródło

Odpowiedzi:

402

To powinno działać:

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

Musisz dodać wiele selektorów wszystkich w pierwszym argumencie do $ (), w przeciwnym razie dajesz jQuery kontekst, w którym chcesz wyszukiwać, co nie jest tym, czego chcesz.

Jest tak samo jak w CSS.

Erik Bakker
źródło
3
Co jeśli chcę dopasować to tylko wtedy, gdy każdy element ma wszystkie określone klasy?
IsmailS
12
W porządku, mam ten jeden stackoverflow.com/q/1041344/148271 . w zasadzie będę musiał dołączyć do wszystkich selektorów na skrzyżowaniu. Like$(".myClass.myOtherClass")
IsmailS,
Więcej na temat grupowania CSS: W3C „Grupowanie” .
skrounge
@wal: Ten przecinek jest konieczny także w CSS, gdy wskazuje się na obie klasy. Bez przecinka oznaczałoby to .myOtherClassgdzieś w środku .myClass.
geekuality
ta odpowiedź nie odpowiada na pytanie, w ten sposób robisz OR !! nie ORAZ !!
Mahmoud Khateeb
26

Próbowałeś tego?

$('.myClass, .myOtherClass').removeClass('theclass');
Ionuț G. Stan
źródło
25

używam $('.myClass.myOtherClass').removeClass('theclass');

Adman
źródło
34
Dzieje się tak, jeśli element HTML ma wiele klas i chcesz usunąć klasę dla elementu tylko dla wszystkich tych klas. Inne przykłady usuną klasę z dowolnego elementu zawierającego dowolną klasę oddzieloną przecinkami. Twój przykład zadziałałby tylko, gdyby mój element HTML zawierał oba , na przykład<div class="myClass myOtherClass theclass">
Kezzer 30.01.11
0
// Due to this Code ): Syntax problem.    
$('.myClass', '.myOtherClass').removeClass('theclass'); 

Zgodnie z dokumentacją jQuery: https://api.jquery.com/multiple-selector/

Kiedy można wybrać wiele klas w ten sposób:

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

umieszczając wszystkie selektory w jednym „...” lub podwójnym przecinku, „...”

W twoim przypadku prawidłowym sposobem wywoływania wielu klas jest:

$('.myClass', '.myOtherClass').removeClass('theclass'); // your Code // Invalid.
$('.myClass , .myOtherClass').removeClass('theclass');  // Correct Code // Is valid.
Rehan Shah
źródło