排序html表的列

时间:2014-07-28 04:36:52

标签: jquery sorting html-table

我在this fiddle中有一个html表,并尝试使用jquery对列进行排序,并引用this stack overflow answer as,

var arr = $('th').filter(function() {
   return (new Date(this.innerHTML)).getDate();
}).sort(function (a, b) {
    return new Date(a.innerHTML) > new Date(b.innerHTML);
}).map(function () {
    return this.cellIndex
}).get();

$('tr').each(function () {
    $(this).children().filter(function(){
       return $.inArray(this.cellIndex, arr)> -1;
    }).sort(function (a, b) {
        a = $.inArray(a.cellIndex, arr);
        b = $.inArray(b.cellIndex, arr);
        return a > b;
    }).insertBefore(this.lastElementChild);
});

最长可达10个月的列。但是如果月份列的数量超过10,则排序将按照小提琴中的分配进行折叠。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果您打印数组arr中的条目,您会发现排序错误。这与排序功能有关。

原始代码中的排序函数返回a > b给定的输入(a, b)。在a <= b的情况下,排序函数将返回0,因此如果我们有严格的不等式a < b,则排序函数会建议a与{{{1}一样大1}}(因为它返回0),这就是出现错误的地方。

您可以尝试以下代码:

DEMO

b