jquery实现table按时间排序

Posted HappyRocky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery实现table按时间排序相关的知识,希望对你有一定的参考价值。

$(document).ready(function(){
  sortTable();
});

var sortTable = function(){
    $("#tableList").find("#cell_startDate").bind("click",function(){
        var sortType = changSign("#tableList","#cell_startDate");
        var sortByStartDateFun = sortByType(sort,".list_startDate label");
        $("#tableList tbody").html($("#tableList tbody tr").sort(sortByStartDateFun));
    });
}

var changSign = function(tableSign,rowSign)
{
    var idtext = $(tableSign).find(rowSign).text();
    var sortType = "asc";
    if(idtext.indexOf("↑") > 0)
    {
        $(tableSign).find(rowSign).text(function(i,origText){
            return origText.substring(0,4) + "↓";
        });
        sortType = "asc";
    }else{
        $(tableSign).find(rowSign).text(function(i,origText){
            return origText.substring(0,4) + "↑";
        });
        sortType = "desc";
    }
    return sortType;
}

var sortType = function(sortType,list_sort){
    return function sortByDate(a,b){
        var aVal = $(a).find(list_sort).text();
        var bVal = $(b).find(list_sort).text();
        if("" == aVal)
        {
            return -1;
        }
        if("" == bVal)
        {
            return 1;
        }
        var aDateTemp = aVal.split(" ");
        var bDateTemp = bVal.split(" ");
        
        var arrStartDate = aDateTemp[0].split("-");
        var arrEndDate = bDateTemp[0].split("-");
        
        var arrStartTime = aDateTemp[1].split(":");
        var arrEndTime = bDateTemp[1].split(":");
        
        var allStartDate = new Date(arrStartDate[0],arrStartDate[1],arrStartTime[0],arrStartTime[1],arrStartTime[2]);
        var allEndDate = new Date(arrEndDate[0],arrEndDate[1],arrEndTime[0],arrEndTime[1],arrEndTime[2]);
        
        if(sortType == "asc")
        {
            if(allStartDate >= allEndDate)
            {
                return 1;
            }else{
                return -1;
            }
        }else{
            if(allStartDate > allEndDate)
            {
                return -1;
            }else{
                return 1;
            }
        }
    }
}

以上是关于jquery实现table按时间排序的主要内容,如果未能解决你的问题,请参考以下文章

Jquery Sortable table,只会对一个日期列进行排序

表格排序器 jQuery hack

使用jQuery UI 实现表格排序

jQuery按等级(desc)排序并根据值隐藏div

Jquery中的数组排序问题(按价格排序)

Mysql查询连接两个表按一个表列排序