条件行格式化jQuery单元格在两个连续的行中具有不同的值

时间:2012-11-09 18:08:01

标签: jquery

需要为连续行中的细胞着色,使其与其他细胞的形成不同。有条件的原始格式化

Pseudopcode会是这样的:

foreach oddrow in table
    foreach cell in row
        if cellvalue != previosCellvalue(previous even)
              color differently

例如:

<table>
   <tr>
      <td>1</td><td>2</td>
   </tr>
      <td>1</td><td>3</td>
   <tr>
      <td>2</td><td>4</td>
   </tr>
   <tr>
      <td>2</td>4<td></td>
   </tr>
</table>

在上面的表格行中,一个单元格二和第二行单元格两个将被设置为不同的样式,其他所有单元格将保留其样式。

3 个答案:

答案 0 :(得分:2)

您使用jQuery标记了它,因此解决方案是: http://jsfiddle.net/kWeNY/

var last, inner;
$('table tr').each(function(i,tr) {
    inner = $.trim($(tr).html());
    if (inner == last) {
        $(tr).css('background-color', 'red');
    }
    last = inner;    
});​

好。使用附加的伪算法,您还可以使用以下选项检查每个第二行:http://jsfiddle.net/gbw49/

var last, inner;
$('table tr').each(function(i,tr) {
    inner = $.trim($(tr).html());
    if (inner == last && i % 2) {
        $(tr).css('background-color', 'red');
    }
    last = inner;    
});​

答案 1 :(得分:0)

尝试使用

$('table tr td:nth-child(2)')

这样添加css:

$(document).ready(function () {
        $('table tr td:nth-child(2)').css("background", "red");
        $('table tr td:nth-child(2)').css("color", "blue");

    });

如果您只想对第1行和第2行执行此操作,请尝试

$(document).ready(function () {
         $('table tr:eq(0) td:nth-child(2)').css("background", "green");
         $('table tr:eq(1) td:nth-child(2)').css("background", "green");
    });

答案 2 :(得分:0)

检查这个。我希望我的问题是正确的 http://jsfiddle.net/kWeNY/1/

    $('table tr:nth-child(even) td:eq(1)').each(function()
        {
            var  firstVal = $(this).text();
            var firstTd = $(this).closest("tr").prev().find("td:eq(1)");
             var secondVal = firstTd.text();
            if(firstVal != secondVal)
            {
                $(this).css({"background-color":"red"});
                firstTd. css({"background-color":"red"}); 
            }
        }
    );