【发布时间】:2014-02-25 00:37:13
【问题描述】:
我正在尝试在没有任何插件的情况下对表格行进行排序。不幸的是,我没有使用插件的选项。好吧,这是我到目前为止所尝试的:
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 对行进行排序。 Closed Date 列可以为空,也可以有日期。问题是它只是对随机行进行排序,此外,我试图将所有空行放在底部,将关闭日期的行放在顶部。我可能做错了什么?
这里是工作jsbin 给那些想看看我到目前为止所做的事情的人。非常感谢任何帮助。
更新
这是更新后的jsbin。我现在可以按关闭日期排序,但它仍然不会强制关闭日期为空的行到底部。
【问题讨论】:
-
什么不起作用?按关闭日期排序工作正常
-
@juvian 好吧,我想把日期关闭的行向上,空的行向下,然后对它们进行排序。
-
我不希望所有浏览器都能正确解析
new Date('Apr 25 2014');格式的日期字符串,有些结果会是NaN。考虑改用time value。 -
那我应该怎么做呢?
-
顺便说一句,使用时间值的一个优点是它们可以直接作为数字排序,无需将它们转换为日期字符串(尽管如果需要人类可读的显示,这相当容易) .
标签: javascript jquery sorting