97

I have a div:

<div class="test" id="someElement" style="position: absolute"></div>

Is there any way to check if the certain element:

$("#someElement") 

has a particular class (in my case, "test").

Alternately, is there a way to check that en element has a certain style? In this example, I'd like to know if the element has "position: absolute".

Thank you very much!

2
  • 14
    not sure if it'sd the question or the answer that's wrong, but the question has style="test", and the answer looks for class="test" Commented Apr 17, 2009 at 9:26
  • 1
    My guess is, the question is wrong, since he marked the wrong answer as right; but regardless, after looking at the votes, I think most people have stumbled in here looking for the correct answer to this wrong question... er, if that makes any sense... The answer from DrJokepu, I mean. It's why I'm here at least. Commented Jun 19, 2012 at 7:04

6 Answers 6

297

CSS Styles are key-value pairs, not just "tags". By default, each element has a full set of CSS styles assigned to it, most of them is implicitly using the browser defaults and some of them is explicitly redefined in CSS stylesheets.

To get the value assigned to a particular CSS entry of an element and compare it:

if ($('#yourElement').css('position') == 'absolute')
{
   // true
}

If you didn't redefine the style, you will get the browser default for that particular element.

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

4 Comments

There's no way to do it with a selector?
with this you can see what is the actual property, what I need to know is if this property is being set directly or is it inherited from css style / browser... is that possible?
Doesn't seem to work for the scenario if the DOM changes/css value of an object changes after page loads. Any idea how to get it to watch css changes after the DOM loads?
@Collarbone You could always use setTimeout() and clearTimeout() to delay the call for a second or so once the document has loaded.
63
if($('#someElement').hasClass('test')) {
  ... do something ...
}
else {
  ... do something else ...
}

1 Comment

This doesn't answer the question as asked -- see DrJokepu's answer below.
13
if ($("element class or id name").css("property") == "value") {
    your code....
}

Comments

6

Or, if you need to access the element that has that property and it does not use an id, you could go this route:

$("img").each(function () {
        if ($(this).css("float") == "left") { $(this).addClass("left"); }
        if ($(this).css("float") == "right") { $(this).addClass("right"); }
    })

Comments

2

Question is asking for two different things:

  1. An element has certain class
  2. An element has certain style.

Second question has been already answered. For the first one, I would do it this way:

if($("#someElement").is(".test")){
    // Has class test assigned, eventually combined with other classes
}
else{
    // Does not have it
}

Comments

1

i've found one solution:

$("#someElement")[0].className.match("test")

but somehow i believe that there's a better way!

Comments

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.