2013-10-03 63 views
2

我試圖讓jQuery dataTables按自定義值排序我的數字列。我已經閱讀了關於數字排序的所有主題,但是仍然找不到解決我的問題的工作解決方案。我存儲我的號碼稱爲sort-countjQuery dataTables自定義afnSortData函數排序數字

一個jQuery的數據屬性這是我的DataTable的初始化:

$('.wp-list-table').dataTable({ 
    "aoColumns": [ 
     null, 
     null, 
     null, 
     { "sType": "numeric", "sSortDataType": "numeric-data-attribut" }, 
     { "sType": "numeric", "sSortDataType": "numeric-data-attribut" }, 
     { "bSortable": false, "bSearchable": false }, 
    ], 
    "bJQueryUI":true, 
    "bPaginate":true, 
    "sPaginationType":"full_numbers" 
}); 

這是我的自定義功能afnSortData在排序前趕上值:

jQuery.fn.dataTableExt.afnSortData['numeric-data-attribut'] = function (oSettings, iColumn) 
{ 
    var aData = []; 
    jQuery('td:eq('+iColumn+')', oSettings.oApi._fnGetTrNodes(oSettings)).each(function() { 
     aData.push(parseInt(jQuery(this).attr('data-sort-count'), 10)); 
    }); 

    console.log(aData); 

    return aData; 
}; 

當在列上多次點擊以對其排序時,console.log(aData)顯示以下輸出。正如你所看到的,它提取正確的值,它們都是數字,但它是完全隨機排序的。

output of console log

我試過衆多個小時,但就是無法得到它的工作。

回答

3

... 7小時後...

這是當您使用數據表的jQuery的新版本時發生的錯誤。顯然,返回的選擇現在按照由_fnGetTrNodes函數返回的數組中元素的順序,按DOM出現而不是排序。

在dataTables文檔中使用自定義afnSortData函數的示例已過時,並且不適用於較新的jQuery版本。

工作版本是這樣的:

jQuery.fn.dataTableExt.afnSortData['numeric-data-attribut'] = function (oSettings, iColumn) 
{ 
    return jQuery.map(oSettings.oApi._fnGetTrNodes(oSettings), function (tr) { 
     var v = jQuery('td:eq('+iColumn+')', tr); 
     return parseInt(jQuery(v).attr('data-sort-count'), 10); 
    }); 
};