jQuery过滤负数并使它们变为正数

时间:2016-10-25 12:13:36

标签: javascript jquery filter

我试图生成一个位置变化表,它找到小于零的值,使这些值变为红色,添加一个类来激活向下箭头,并从负值中删除减号。

一切正常,但我无法删除减号。我试过乘以-1和Math.abs(),但没有任何效果。我也没有在控制台中收到错误。

正在从csv数据中填充值。

$('.move').filter(function() {
    var neg = $(this).text() < 0;
    return Math.abs(neg);
}).css( "color", "#ff0000" ).addClass('down');

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您是否尝试使用$(this).text()明确地将parseInt解析为某个数字?

编辑:

顺便说一下,你的过滤器是错误的

$('.move').filter(function() {
    var number = $(this).text();
    var isNeg = number < 0;
    $(this).text(isNeg ? Math.abs(number) : number);
    return isNeg;
}).css( "color", "#ff0000" ).addClass('down');

答案 1 :(得分:0)

您应首先使用text()解析parseInt返回的文本(将字符串值转换为数字):

$('.move').filter(function() {

    // This filter function will keep only negative integers
    var val = parseInt($(this).text(), 10);
    return !isNaN(val) && val < 0;

}).css( "color", "#ff0000" ).addClass('down');

如果要删除负号,则需要更改通过过滤函数的每个元素的文本。但是,如果运行两次或更多(负数现在显示为正数),删除“ - ”符号将改变过滤器功能的行为,因此请注意这一点。

... .addClass('down').each(function () {
    $(this).text($(this).text().replace('-', ''));
});