Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于jQuery数据表的简单自定义排序函数_Jquery_Sorting_Datatables - Fatal编程技术网

用于jQuery数据表的简单自定义排序函数

用于jQuery数据表的简单自定义排序函数,jquery,sorting,datatables,Jquery,Sorting,Datatables,数字排序在我的数据集上不起作用。所以我做了一个自定义排序,将整个字符串转换成数字,然后根据数字进行排序,但由于某些原因,它不起作用。我错过了什么 $.fn.dataTableExt.oSort["test-desc"] = function (x, y) { x = parseInt(x); y = parseInt(y); if ( x < y) { return 1; }

数字排序在我的数据集上不起作用。所以我做了一个自定义排序,将整个字符串转换成数字,然后根据数字进行排序,但由于某些原因,它不起作用。我错过了什么

$.fn.dataTableExt.oSort["test-desc"] = function (x, y)
{

         x = parseInt(x);
        y = parseInt(y);

        if ( x < y)
        {
            return 1;
        }

        return 0;


};

$.fn.dataTableExt.oSort["test-asc"] = function (x, y)
{

    x = parseInt(x);
    y = parseInt(y);

    if ( x > y)
    {
        return 1;
    }

    return 0;

}

$('table').DataTable({
    "pageLength": 300,
    "bLengthChange": false,
    "columnDefs": [
    { "type": "test", targets: 3 }
    ]
});
$.fn.dataTableExt.oSort[“test desc”]=函数(x,y)
{
x=parseInt(x);
y=parseInt(y);
if(xy)
{
返回1;
}
返回0;
}
$('table').DataTable({
“页面长度”:300,
“bLengthChange”:false,
“columnDefs”:[
{“类型”:“测试”,目标:3}
]
});


上升和下降都不能正常工作。我已经检查了这些函数是否被调用并正确地将字符串转换为数字实例。

jQuery DataTable排序函数不返回1和0。相反,它们返回1和-1。因此,修改排序函数使它们能够完美地工作

    $.fn.dataTableExt.oSort["test-desc"] = function (x, y)
    {

        x = parseInt(x);
        y = parseInt(y);

        if ( x > y)
        {
            return -1;
        }

        return 1;

    };

    $.fn.dataTableExt.oSort["test-asc"] = function (x, y)
    {

        x = parseInt(x);
        y = parseInt(y);

        if ( x > y)
        {
            return 1;
        }

        return -1;
    }

jQuery DataTable排序函数看起来不是0或1,也不是1或-1。它查找正值或负值。所以你可以这样做:

$.fn.dataTableExt.oSort[“test desc”]=函数(x,y){
x=parseInt(x);
y=parseInt(y);
返回y-x;
};
$.fn.dataTableExt.oSort[“测试asc”]=函数(x,y){
x=parseInt(x);
y=parseInt(y);
返回x-y;
};

我在图像上看到,您正在将字符串解析为数字(字符串到int),其中包括“A |%:”?是的,单元格中的任何内容都会被解析。它还包括div标签。