想要使用jquery在条件上为td着色值

时间:2012-10-30 10:53:25

标签: jquery

我想根据条件将负值染成红色,我现在这样做:

$('td.numeric:contains('-')").addClass("negative")

上面的代码找到td,其类名为numeric,如果value包含' - ',则它将类'negative'应用于该td。

我的问题是,如果我将数字类应用于例如日期值,其中也包含' - '作为分隔符,并使日期为红色。

所以我的问题是,如何找到值为' - '的td?

喜欢

$('td.numeric:startwith('-')").addClass("negative")

CSS

.numeric {  text-align:right; }
.negative { text-align:right; color:red; }

3 个答案:

答案 0 :(得分:1)

您可以使用filter()

$("td.numeric").filter(function() {
    return $.trim($(this).text()).indexOf("-") == 0;
}).addClass("negative")

答案 1 :(得分:0)

试试这个:

$("td").each(function() {
var text = $(this).text();
if (/[+-]?\d+(\.\d+)?/.test(text)) {
 var num = parseFloat(text);
 if (num < 0) {
   $(this).addClass("negative"); //add negative class
 } else if (num > 0) {
    $(this).addClass("positive"); //add positive class
 }

 }
 });

答案 2 :(得分:0)

这样写:

$('td.numeric').filter(function(){return this.innerHTML[0] === '-';});

或更安全:

$('td.numeric').filter(function(){return this.innerHTML.match(/^\s*-/;});

在jquery选择器中放入很多函数只会伤害性能,使用过滤器是更好的选择。