Javascript Tablesorter排序顺序工作不正常

Javascript Tablesorter排序顺序工作不正常,javascript,jquery,sorting,tablesorter,Javascript,Jquery,Sorting,Tablesorter,我的tablesorter自定义解析器排序顺序工作不正常,看起来我没有做错任何事情。有人能在这里说明一下吗 $.tablesorter.addParser({ id: "sample", is: function (s) { return false; }, format: function (s) { return s.toLowerCase().replace(/blood/,1).replace(/RnD/,2).replace(/unassigned/,

我的tablesorter自定义解析器排序顺序工作不正常,看起来我没有做错任何事情。有人能在这里说明一下吗

$.tablesorter.addParser({
  id: "sample",
  is: function (s) {
    return false;
  }, 
  format: function (s) {
    return s.toLowerCase().replace(/blood/,1).replace(/RnD/,2).replace(/unassigned/,3)
  }, 
  type: "numeric"  
});
并实现排序

$("#revSummaryTb").tablesorter({
  sortList: [[3,0]],
  headers: {
    0: { sorter:'text'},
    1: { sorter:'digit'},
    2: { sorter:'text'},
    3: { sorter:'sample'}
  }
});
第3列是感兴趣的列。然而,这最终导致我的列排序完全错误,从一个列到另一个列,然后再返回(也就是说没有真正的排序)。我做错了什么?

将解析器类型切换为“text”:

将解析器类型切换为“text”:


如果表格单元格中包含的文本不仅仅是“blood”、“RnD”和“unassigned”,那么插件会尝试将剩余文本作为数值进行排序。如果您提供列内容的示例,则更容易解决确切的问题。内容为“样本血液”、“样本RnD”、“样本未分配”。它只能是这3个选项中的一个。然后解析器返回“sample_1”、“sample_2”和“sample_3”,并假设它是数字。将解析器类型切换为“text”,它就会开始工作。我想你误解了我的意思。为了简单起见,我在这里使用了“Rnd”、“blood”和“unassigned”。我在解析器中搜索的文本将与单元格中值的精确文本匹配(而不仅仅是该值的一部分)请设置演示如果表格单元格中包含的文本多于“blood”、“RnD”和“unassigned”,那么插件将尝试将剩余文本作为数值排序。如果您提供列内容的示例,则更容易解决确切的问题。内容为“样本血液”、“样本RnD”、“样本未分配”。它只能是这3个选项中的一个。然后解析器返回“sample_1”、“sample_2”和“sample_3”,并假设它是数字。将解析器类型切换为“text”,它就会开始工作。我想你误解了我的意思。为了简单起见,我在这里使用了“Rnd”、“blood”和“unassigned”。我在解析器中搜索的文本将与单元格中值的精确文本匹配(不仅仅是该值的一部分)请设置演示为什么我要将数字排序为文本在这种情况下,replace方法将返回“sample_1”、“sample_2”和“sample_3”,它们不是数值。当设置数字解析器时,它将尝试将结果解析为数字值,失败并返回到使用文本。。。并在尝试对列进行排序时使用数字排序算法。当数字排序算法遇到文本时,它不会对值进行最佳排序。我想你误解了我的意思。为了简单起见,我在这里使用了“Rnd”、“blood”和“unassigned”。我在解析器中搜索的文本将与单元格中值的精确文本匹配(而不仅仅是该值的一部分)。因此,replace方法将返回“1”、“2”和“3”。为什么我要将数字排序为文本在这种情况下,replace方法将返回“sample_1”、“sample_2”和“sample_3”,它们不是数值。当设置数字解析器时,它将尝试将结果解析为数字值,失败并返回到使用文本。。。并在尝试对列进行排序时使用数字排序算法。当数字排序算法遇到文本时,它不会对值进行最佳排序。我想你误解了我的意思。为了简单起见,我在这里使用了“Rnd”、“blood”和“unassigned”。我在解析器中搜索的文本将与单元格中值的精确文本匹配(而不仅仅是该值的一部分)。因此,replace方法将返回“1”、“2”和“3”。
$.tablesorter.addParser({
  id: "sample",
  is: function (s) {
    return false;
  },
  format: function (s) {
    return s.toLowerCase().replace(/blood/,1).replace(/RnD/,2).replace(/unassigned/,3);
  },
  type: "text"
});