2012-08-10 76 views
1

如何检查<tr>的任何孩子是否包含background:blue;然后执行某些操作?检查'<tr>`中任何孩子的CSS背景颜色?

$('table tr').each(function(index,value){ 
    if (value.has('background:blue')){ 
     alert (index); //do something to this row 
    } 
}); 
<table> 
    <tr> 
     <td>dfgdfgdfgdf</td> 
     <td><input style="background:blue; value="test" /></td> 
     <td>gdfg</td> 
     <td><p style="background:blue;>cvcxvcxvx</p></td> 
    </tr> 
    <tr> 
    <td>gfdgdfg</td> 
     <td>gdfgfd</td> 
     <td style="background:blue;>dfgdf</td> 
     <td><div><div><button style="background:blue; type="submit"/></div></div></td> 
    </tr> 
    <tr> 
    <td>gfdgdfg</td> 
     <td>gdfgfd</td> 
     <td>dfgdf</td> 
     <td>dfgdf</td> 
    </tr> 
    <tr> 
    <td>gfdgdfg</td> 
     <td>gdfgfd</td> 
     <td>dfgdf</td> 
     <td><div><div><button style="background:blue; type="submit"/></div></div></td> 
    </tr> 
</table> 

回答

2

那是什么?

$(function() { 
    $('tr').find('*').each(function(i) { 
     if ($(this).css('background-color') == 'rgb(0, 0, 255)') 
      alert($(this).text()); 
    }); 
});​ 

http://jsfiddle.net/xHgVf/3/

2

这会不会是快,但它的工作:

var $blueElements = $("tr *").filter(function() { 
    return $(this).css("background-color") == "blue"; 
}); 

有没有你不能使用一个CSS类将每个元素的蓝色背景的一个原因?那么你可以使用该类来选择它们:$(".blue-element")

+0

感谢 - 但我想如果没有很多的元素,那么它应该被罚款 - 对吗?但添加一个css类是一个好主意。谢谢我会试试 – 2012-08-10 08:49:18

+0

这是否会为你返回任何东西,它对我来说是空的,'$ blueElements.Length'是'0' – 2012-08-10 08:57:14

+0

最后我用$('tr')去了find('。blue-element “) – 2012-08-10 09:53:25