jQuery基于文本更改表格单元格的文本颜色

我有一个包含状态数据列的表。 两个示例状态将是“拒绝”和“已付”

我想要做的是将“拒绝”的文本颜色更改为红色,并将“付费”的颜色更改为绿色。

对于具有此状态的单元格,我向td添加了一个类,如下所示:

<td class="status">
    @Html.DisplayFor(modelItem => item.Status)
</td>

所以我可以很容易地识别它。

我发现我可以使用以下命令将所有状态的颜色更改为红色:

$('.status').css("color", "red");

我也可以通过以下方式获得第一个的价值:

alert($('.status').html());

不过,我不确定如何根据文本设置状态颜色。 即将所有“已接收”设置为红色,并将所有“已付”设置为绿色。

有人能告诉我如何实现这一目标吗?

我甚至按照正确的方法使用jQuery或有更好的CSS方式?


这将工作:

$('.status:contains("Paid")').css('color', 'red');
$('.status:contains("Received")').css('color', 'green');

http://jsfiddle.net/MMEhc/


我也可以通过...获得第一个的价值

通过那个选择器,你可以得到一个集 并且您在集合中的第一个项目上执行.html()

您可以遍历所有status单元以检查状态并更改颜色。

$('.status').each(function() {
  // check text and do styling
});

然而这不是优选的(因为它不是必需的)。 这会伤害到性能。

你也可以使用.contains()作为这个(http://api.jquery.com/contains-selector/)。

也并非真的需要。 我认为不是性能最好的选择。

所以最好的选择(恕我直言)是:

你为什么不给单元添加两个额外的类: status-receivedstatus-paid因为你已经知道了单元在渲染时的状态。

所以你可以这样做:

$('.status-received').css("color", "red");
$('.status-paid').css("color", "red");

或者完全放弃jQuery(因为我们不再需要它了(除非我们要动态地改变单元格)),并且只是样式这两个类使用CSS。


如果您要从数据库打印表格,只需根据结果将类别分配给td

然后为该类分配背景颜色。

td.paid {
 display:block;
background-color:red;

}

td.recieved {
 display:block;
background-color:green;
}

为什么你首先需要为此使用JavaScript?

如果我没有弄错,上面的代码是jQuery,所以如果你使用它,不要忘记添加Lib。

链接地址: http://www.djcxy.com/p/31023.html

上一篇: jQuery change table cell text color based on text

下一篇: jqGrid with custom cell colors