DA.
DA.

Reputation: 40671

jQuery className woes

I'm trying to get the name of a class that matched a regex of a checked input.

If I have this:

 <input type="radio" class="toggle toggle-1" />
 <input type="radio" class="toggle toggle-2" checked="checked" />
 <input type="radio" class="toggle toggle-3" />

I want to find out that 'toggle-2' is the checked class.

 $('.toggle:checked').className.match(/toggle\-.+?\b/);

But that produced 'className is undefined' errors.

I think my problem is that I'm using className against a jQuery object. But I'm not really sure what the alternative is.

Upvotes: 1

Views: 14229

Answers (4)

bobince
bobince

Reputation: 536379

className is a standard DOM member, not a jQuery wrapper property. Either access through $('something')[0].className or jQuery $('something').attr('class'), but you can't mix them.

You appear to have multiple radio​s without a shared name? That won't work, they'll all act ast separately checkable fields. All radio controls that belong together need to have the same name (but different value​s) and be placed within the same form.

Upvotes: 6

Corey Hart
Corey Hart

Reputation: 10596

$('.toggle:checked').hasClass('toggle-2');

Upvotes: 0

Shawn
Shawn

Reputation: 19793

You can call the attr method to get any underlying attributes on the element you need.

$('.toggle:checked').attr('class').match(/toggle\-.+?\b/); 

Upvotes: 9

Martin
Martin

Reputation: 9

Don't you need an Id on all items jQuery is to look at?

Upvotes: 0

Related Questions