225

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

410

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.

Sign up to request clarification or add additional context in comments.

6 Comments

What if I want to match it only when each of the element have all the specified classes?
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")
More on CSS grouping: W3C "Grouping".
@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.
this answer doesn't answer the question, this way you're making an OR!!!! not AND!!
|
26

Have you tried this?

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

Comments

26

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

1 Comment

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">
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.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.