我试图在没有任何插件的情况下对表行进行排序。不幸的是我没有选择使用插件。那么这就是我到现在为止所尝试的:
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;
});
});
正如您所看到的,我正在使用data-attribute
对行进行排序。 关闭日期列可以为空或可以包含日期。问题是它只是对随机行进行排序,而且,我试图将所有空行放在底部,将截止日期的行放在顶部。我可能做错了什么?
对于那些想要了解我到目前为止所做的事情的人来说,这是jsbin的工作。我真的很感激任何帮助。
更新
这是一个更新的jsbin。我现在可以按关闭日期排序,但它仍然不会强制关闭日期为空的行。
答案 0 :(得分:2)
如果降序并且数据为“null”,则将数据设为1900年1月1日(因此它将位于底部) 如果升序且数据为“null”,则将数据设为9999年1月1日(因此它将位于底部)
然后进行正常比较y-x或x-y。