tags:

views:

59

answers:

5

I would like to select every div that has a red background color for example. is this possible in jquery?

<div style="background-color:red"></div>
<div style="background-color:white"></div>
<div style="background-color:red"></div>
<div style="background-color:yellow"></div>

thank you

+2  A: 
$('div[style=background-color:red]');
gmcalab
Will only work if there's style attribute on the tag
ThiefMaster
@ThiefMaster - I answered the question in reference to the example html above.
gmcalab
@gmcalab - nothing wrong with that, just worth pointing out in case someone using this doesn't realize that. Also, if the style tag isn't formatting exactly like `background-color:red` this will not match
John Rasch
+2  A: 

You could use the jQuery filter:

$('div').filter(function() {
   return this.element.style['background-color'] == 'red';
});

But, as tvanfosson has said, the correct way would be to assign a CSS class to each of your divs, then you could call the objects using jQuery like this (which is the preferred way of working with jQuery):

$('.yourCSSClass');
GenericTypeTea
+1  A: 

I think you need a custom filter for that if you don't want to rely on a certain style="" attribute on the tag:

$(*).filter(function() { /* check the background color of this */ });
ThiefMaster
+5  A: 

Why do it the hard way? A better solution is to use CSS classes to give your elements their styles, then you can simply use the class-based selector.

<style type="text/css">
    .alert {
       background-color: red;
    }
</style>

<div class="alert"></div>


$('.alert')....
tvanfosson
+1  A: 

First of all, I never recommend setting in-line styles on page elements. Assign CSS classes and control your background colors in an external CSS document.

<div class="red"></div>
<div class="white"></div>
<div class="red"></div>
<div class="yellow"></div>

And in your CSS:

.red {background-color:red;}
.white {background-color:white;}
.yellow {background-color:yellow;}

Then it makes it easy to select the red ones by using: $('div.red')

EAMann