使用jQuery按背景颜色查找div

时间:2010-04-19 19:48:58

标签: javascript jquery jquery-selectors

我正在尝试使用jQuery查找可见的div数,并且背景颜色为Green。

(通常我只是在div中添加一个类,将其设置为绿色,并在jQuery中检查该类,但在这个实例中,我无法以任何方式实际更改页面本身的标记)

我目前将可见的div部分视为:

if(  // if there are more than one visible div 
    $('div.progressContainer:visible').length > 0   
){

我想在那里抛出某种“背景色为绿色”选择器。

// not legit javascript
if(  // if there are more than one visible div, and its color is green 
    $('div.progressContainer:visible[background-color:green]').length > 0   
){

是否可以这样做?

4 个答案:

答案 0 :(得分:11)

jQuery没有基于样式的选择器(:visible除外),所以你不能这样做。

您可以改为使用filter

$('div.progressContainer:visible').filter(function() {
    return $(this).css('background-color') === 'green';
})

请注意,它与background-color:#0F0不匹配。

答案 1 :(得分:6)

如果您经常在多个位置使用此功能,您也可以考虑编写自己的自定义选择器(http://answers.oreilly.com/topic/1055-creating-a-custom-filter-selector-with-jquery/

jQuery.expr[':'].greenbg = function(elem) {
        return jQuery(elem).css('background-color') === 'green';
};

然后你只需$('div:visible:greenbg').stuffs()

答案 2 :(得分:3)

您可以使用filter微调您选择的内容,如下所示:

$('div.progressContainer:visible').filter(function(){
   return $(this).css('background-color') == 'green';
});

答案 3 :(得分:0)

你可以这样做:

if($('div.progressContainer:visible').css('background-color') == 'green'){
   //should equal true, if it's green
}