【问题标题】:Jquery tablesorter customize option for sortingJquery tablesorter 自定义排序选项
【发布时间】:2014-09-16 08:39:35
【问题描述】:

我正在使用 jquery 表排序器。具有默认顺序的表格排序器,如数字、特殊字符和字母。 我需要先排序 special characternumberalphabets

在第 3 列检查此 URL(动物)

jsfiddle.net/Mottie/abkNM/325/

对此有什么帮助吗?

【问题讨论】:

  • 你指的是什么特殊字符?
  • 任何特殊字符....
  • jsfiddle.net/abkNM/4099检查这个URL,动物专栏...这样你就可以了解...这里首先是数字,然后是特殊字符,然后是字母......但我的优先级就像特殊字符、数字和字母......

标签: jquery tablesorter


【解决方案1】:

默认的自然排序将内容分成块进行比较,但这些块是由文本字符和数字的“块”设置的。当遇到非文本/数字字符时,它不会被分解。

因此,在您的演示中,值“#Elephant”和“0Zebra”排序将这些值分解如下:

#Elephant => [ '#Elephant' ]
0Zebra    => [ '0', 'Zebra' ]

当比较完成时,它看到“#Elephant”不是数字,但“0”是数字,因此基于ascii comparison,非数字(假定为字母字符)值大于数字值;因此“#Elephant”排在“0Zebra”之后。

我知道您没有要求解释,但解决此问题的最简单方法是更换分拣机。请改用简单的文本排序器 (demo):

$('table').tablesorter({
    textSorter: {
        2: $.tablesorter.sortText
    }
});

更新:如果您想要特定的排序,您需要重新排序 ascii 值。我设置了特定于数据的this demo,它只更改第一个字符。

var reorderAscii = function(x){
    if (x === '') { return x; }
    var v = x.charCodeAt(0),
        z = x.charCodeAt(0);
    if ( z > 90 && z < 97) {
        // move [\]^_` to replace ABCDEF
        v = v - 26;
    } else if (z > 122 && z < 127) {
        // move {|}~ to replace GHIJ
        v = v - 52;
    } else if (z > 47 && z < 58) {
        // move 0123456789 to replace KLMNOPQRST
        v = v + 27;
    }
    return z !== v ? String.fromCharCode(v) + x.slice(1) : x;
};

$('table').tablesorter({
    theme: 'jui',
    headerTemplate: '{content}{icon}',
    // ignoreCase must = true
    ignoreCase: true,
    textExtraction: function(node, table, cellIndex){
        var t = $.trim( $(node).text().toLowerCase() );
        return cellIndex === 2 ? reorderAscii(t) : t;    
    },
    textSorter: function (a, b) {
        if (a == b) { return 0; }
        if (a == '') { return 1; }
        if (b == '') { return -1; }
        return a > b ? 1 : -1;
    },
    widgets: ['uitheme', 'zebra', 'columns'],
    widgetOptions: {
        zebra: [
            "ui-widget-content even",
            "ui-state-default odd"]
    }
});

我忘了提到使用除字母数字排序器之外的任何其他排序器,空单元格和字符串单元格排序将被忽略。我需要将其包含在文档中。

【讨论】:

  • 优秀的 ji...感谢您的描述,我认为 ascii 比较升序时也是如此...但是看看这个jsfiddle.net/abkNM/4121。现在顶部的空白区域和一些字符出现在数字/字母之后。我在标题中使用了空:“底部”。但它现在不起作用。现在我需要 spl 字符、数字、字母(上下平行)和空格/空。在我的应用程序中,我必须在任何地方使用,而不是一列。等待您的回复...感谢您的想法....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
相关资源
最近更新 更多