tags:

views:

931

answers:

3

I would like to select a set of elements that are both of a certain input type (say, a checkbox) and have a certain class using jQuery. However, when I try the following:

 $("input:checkbox .myClass")

I don't get any items returned. How can I accomplish this in jQuery?

+7  A: 

Your selector is looking for any descendants of a checkbox element that have a class of .myClass.

Try this instead:

$("input.myClass:checkbox")

Check it out in action.

I also tested this:

$("input:checkbox.myClass")

And it will also work properly. In my humble opinion this syntax really looks rather ugly, as most of the time I expect : style selectors to come last. As I said, though, either one will work.

Paolo Bergantino
Blasted - I inserted my answer too quickly, made the same mistake. Oh well, rather than editing I'll withdrawl and up-vote you for seeing the error ;)
Jonathan Sampson
Thank you kind sir.
Paolo Bergantino
Thanks, Paolo! Works like a charm!
Brian Sullivan
+2  A: 

If you want to get the inputs of that type with that class use:

$("input.myClass[type=checkbox]")

the [] selector syntax allows you to check against any of the elements attributes. Check out the spec for more details

BaroqueBobcat
It would be courteous to up-vote Paolo rather than providing the same answer.
Jonathan Sampson
WFT? It's not the same answer at all.
Eli
A: 

You have to use (for checkboxes) :checkbox and the .name attribute to select by class. For example:

$("input.aclass:checkbox")

The :checkbox selector:

Matches all input elements of type checkbox.
Using this psuedo-selector like $(':checkbox') is equivalent to $('*:checkbox') which is a slow selector. It's recommended to do $('input:checkbox').

You should read jQuery documentation to know about selectors.

eKek0