Javascript 使用jQuery对表行排序时忽略空单元格

Javascript 使用jQuery对表行排序时忽略空单元格,javascript,jquery,sorting,Javascript,Jquery,Sorting,我正在尝试在没有任何插件的情况下对表行进行排序。不幸的是,我没有选择使用插件。好吧,以下是我迄今为止所尝试的: var info = $('#project_table tr.punch_list_summary'); //For Closed Date $(document).on('click', '#descending_closed_date', function(e) { e.preventDefault(); var sortDir =

我正在尝试在没有任何插件的情况下对表行进行排序。不幸的是,我没有选择使用插件。好吧,以下是我迄今为止所尝试的:

var info = $('#project_table tr.punch_list_summary');
    //For Closed Date
    $(document).on('click', '#descending_closed_date', function(e) {
        e.preventDefault();
        var sortDir = -1;
        info.sort(function(a, b) {
            if ($(a).attr('data-closeddate') === 'null') {
                if ($(b).attr('data-closeddate') === 'null') {
                    return false;
                }
                return true;
            }
            a = new Date($(a).attr('data-closeddate'));
            b = new Date($(b).attr('data-closeddate'));
            return (a - b) * sortDir;
        });
        $('#project_table').html(info);
        sortDir = 1;
    });

    $(document).on('click', '#ascending_closed_date', function(e) {
        e.preventDefault();
        var sortDir = 1;
        info.sort(function(a, b) {
            if ($(a).attr('data-closeddate') === 'null') {
                if ($(b).attr('data-closeddate') === 'null') {
                    return false;
                }
                return true;
            }
            a = new Date($(a).attr('data-closeddate'));
            b = new Date($(b).attr('data-closeddate'));
            return (a - b) * sortDir;
        });
        $('#project_table').html(info);
        sortDir = -1;
    });

});
如您所见,我正在使用
数据属性
对行进行排序。关闭日期列可以为空,也可以有日期。问题是它只是对随机的行进行排序,而且,我试图将所有的空行放在底部,而关闭日期的行放在顶部。我可能做错了什么

这是为那些想看看我迄今为止所做工作的人准备的。我真的很感激任何帮助

更新


这里有一个更新的。我现在可以按关闭日期排序,但它仍然不会强制将关闭日期为空的行置于底部。

如果降序且数据为“null”,则将数据设置为1900年1月1日(因此它将位于底部) 如果升序且数据为“null”,则将数据设置为9999年1月1日(因此它将位于底部)

然后做一个正常的比较y-x或x-y


什么不起作用?按截止日期排序fine@juvian好吧,我想把截止日期的行调高,把空行调低,然后对它们进行排序。我不希望所有浏览器都能正确地解析格式为
newdate('2014年4月25日')的日期字符串
,在某些情况下,结果将是
NaN
。考虑使用A代替。那么我应该做些什么呢?顺便说一下,使用时间值的一个优点是它们可以直接作为数字进行排序,不需要将它们转换成日期字符串(尽管对于人类可读的显示来说,这是相当容易的)。