首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery dataTables自定义afnSortData函数排序数值

jQuery dataTables自定义afnSortData函数排序数值
EN

Stack Overflow用户
提问于 2013-10-03 13:04:01
回答 1查看 3.1K关注 0票数 2

我试图让jQuery dataTables按自定义值对数字列进行排序。我已经阅读了关于数字排序的所有线程,但还没有找到解决问题的有效解决方案。我将我的数字存储在一个名为jQuery的sort-count数据属性中

这是我的dataTables初始化:

代码语言:javascript
复制
$('.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函数,用于在排序之前捕获值:

代码语言:javascript
复制
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)将显示以下输出。正如您所看到的,它获取正确的值,它们都是数字的,但是它是完全随机地对它们进行排序。

我已经试了好几个小时了,但还是没能成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-03 20:21:21

.7个小时后.

这是一个错误,当您使用更新版本的jQuery与dataTables。显然,返回的选择现在是由DOM出现排序的,而不是按照数组中元素的顺序排序的,而数组中的元素是由_fnGetTrNodes函数返回的。

在afnSortData文档中使用自定义jQuery函数的示例已经过时,不能用于较新的jQuery版本。

工作版本如下所示:

代码语言:javascript
复制
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 );
    } );
};
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19159972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档