226

I’ve had a good look and can’t seem to find out how to select all elements matching certain classes in one jQuery selector statement such as this:

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

Any ideas on how to achieve this? The only other option is to do

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

But I’m doing this with quite a few classes, so it requires much code.

4 Answers 4

411

This should work:

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

You must add the multiple selectors all in the first argument to $(), otherwise you are giving jQuery a context in which to search, which is not what you want.

It's the same as you would do in CSS.

6
  • 3
    What if I want to match it only when each of the element have all the specified classes?
    – IsmailS
    Commented Sep 2, 2011 at 13:01
  • 12
    Al right, I got this one stackoverflow.com/q/1041344/148271. basically I will have to join all the selector for intersection. Like $(".myClass.myOtherClass")
    – IsmailS
    Commented Sep 2, 2011 at 13:03
  • More on CSS grouping: W3C "Grouping".
    – skrounge
    Commented Jun 7, 2013 at 2:34
  • @wal: That comma is necessary also in CSS when pointing to both classes. Without the comma it'd reference to .myOtherClass that is somewhere inside .myClass.
    – geekuality
    Commented Oct 6, 2014 at 12:14
  • this answer doesn't answer the question, this way you're making an OR!!!! not AND!! Commented Nov 27, 2015 at 16:34
26

Have you tried this?

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

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

1
  • 34
    This is if an HTML element has multiple classes, and you want to remove the class for the element only with all of those classes. Other examples will remove the class from any element with any of the classes that are comma-separated. Your example would only work if my HTML element had both, such as <div class="myClass myOtherClass theclass"> Commented Jan 30, 2011 at 10:32
0
// Due to this Code ): Syntax problem.    
$('.myClass', '.myOtherClass').removeClass('theclass'); 

According to jQuery documentation: https://api.jquery.com/multiple-selector/

When can select multiple classes in this way:

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

by enclosing all the selectors in a single '...' ' or double commas, "..."

So in your case the correct way to call multiple classes is:

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.