开发者

jquery element filter by css

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


This code also works for CSS that is not defined in the style attribute of the tag:

$('div').filter(function() {
   return $(this).css('background-color') == 'red';
});


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');


$('div[style=background-color:red]');


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')....


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')


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

$('*').filter(function() { /* check the background color of this */ });
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜