我试图让jQuery dataTables按自定义值对数字列进行排序。我已经阅读了关于数字排序的所有线程,但还没有找到解决问题的有效解决方案。我将我的数字存储在一个名为jQuery的sort-count数据属性中
这是我的dataTables初始化:
$('.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)将显示以下输出。正如您所看到的,它获取正确的值,它们都是数字的,但是它是完全随机地对它们进行排序。

我已经试了好几个小时了,但还是没能成功。
发布于 2013-10-03 20:21:21
.7个小时后.
这是一个错误,当您使用更新版本的jQuery与dataTables。显然,返回的选择现在是由DOM出现排序的,而不是按照数组中元素的顺序排序的,而数组中的元素是由_fnGetTrNodes函数返回的。
在afnSortData文档中使用自定义jQuery函数的示例已经过时,不能用于较新的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 );
} );
};https://stackoverflow.com/questions/19159972
复制相似问题