2015-09-22 83 views
0

這裏是jsFiddlejquery sortElement:按表格數據的數值排序

正如您從小提琴中看到的那樣,total列包含當前按文本排序的數字。

問:如何按數值對total列進行排序?

var table = $('table'); 

    $('#facility_header, #city_header, #total') 
     .wrapInner('<span title="sort this column"/>') 
     .each(function(){ 

      var th = $(this), 
       thIndex = th.index(), 
       inverse = false; 

      th.click(function(){ 

       table.find('td').filter(function(){ 

        return $(this).index() === thIndex; 

       }).sortElements(function(a, b){ 

        return $.text([a]) > $.text([b]) ? 
         inverse ? -1 : 1 
         : inverse ? 1 : -1; 

       }, function(){ 

        // parentNode is the element we want to move 
        return this.parentNode; 

       }); 

       inverse = !inverse; 

      }); 

     }); 

回答

0

您必須在比較它們之前解析這些值。

.sortElements(function(a, b){ 
    var sa = $.text([a]); 
    var sb = $.text([b]); 

    var ia = parseInt(sa); 
    var ib = parseInt(sb); 

    if (!isNaN(ia) && !isNaN(ib)) { 
     return ia > ib ? (inverse ? -1 : 1) : (inverse ? 1 : -1); 
    } 

    return sa > sb ? (inverse ? -1 : 1) : (inverse ? 1 : -1); 
} 

這是您的更新jsfiddle