1

I have a bunch of inputs like this

<input id="someId" type="button" class="SomeClass" onclick="determineClass(this.id, event)" />

From javascript I would like to get the class, it's different for each input.

function determineClass(id, e) {
    var elementClass = //Somehow get the class here
}

It can be using jQuery or just plain javascript... Does anyone know how to do this?

Thanks, Matt

5 Answers 5

6
alert($('#someId').attr('class'));

If your input has multiple classes, attr('class') returns a space-delimited list of classnames. You can get the last one as follows:

alert($('#someId').attr('class').split(' ').slice(-1));

See Attributes/attr

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

Comments

1

You would use:

$('#someId').attr('class')

But beware that if it has multiple classes it will return a string of all of them, so you'll have to use indexOf or a regex to check for a specific class in that case.

4 Comments

Could also slide with $('#someId')[0].className.
...or $('#someId:first').attr('class')
@David Andres - $('#someId:first') implies multiple elements of the same ID, big no-no.
@karim79: A big no-no, yes. Not going to disagree on that point.
1

A bit simpler using plain ol' JavaScript:

function determineClass(id, e)
{
  var elem = document.getElementById(id);

  if(elem)
  {
    alert(elem.className);
  }
}

Comments

1

Using plain ol' javascript, if you already have a variable/reference to the element, you can pull the class out using "element.className"

So, for your element "someId" above:

element = document.getElementById('someId');
if(element) elementClass = element.className

This gets a little more complicated if you have multiple classes assigned to the element -- you'd have to split what you find in the className property by a space in order to separate them -- but that's the basics.

That said, if you've got the chance, use jQuery. It generally makes this kind of thing easier.

Comments

1

[edit]

Ah crap... not what you meant...

$('#id').attr('class');

[/edit]

2 Comments

He is already using jQuery. There is no need to use another library.
You know you can delete an answer if it's not applicable to the question.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.