Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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-TableSorter自定义解析器不工作_Jquery_Tablesorter - Fatal编程技术网

jQuery-TableSorter自定义解析器不工作

jQuery-TableSorter自定义解析器不工作,jquery,tablesorter,Jquery,Tablesorter,这是我的自定义解析器: $.tablesorter.addParser({ id: "customParser", is: function (stringValue) { return false; }, format: function (stringValue) { var stringValueParts = stringValue.split("-"); var numericPartOfStringVal

这是我的自定义解析器:

$.tablesorter.addParser({
    id: "customParser",
    is: function (stringValue) {
        return false;
    },
    format: function (stringValue) {
        var stringValueParts = stringValue.split("-");
        var numericPartOfStringValue = parseInt(stringValueParts[2]);
        return numericPartOfStringValue ;
    },
    type: 'numeric'
});
stringValue将具有如下值:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-101
  • ABC-DE-1000
下面是我设置tablesorter并添加自定义排序解析器的代码:

$(function() {
    $("#dataTable").tablesorter({
        headers: {
            3: {
                sorter: 'customParser'
            }
        }
    });
});
我添加了一个console.log(numericPartOfStringValue),所有的数字都写到了控制台上,所以解析器似乎正在做它应该做的事情

那么我希望发生什么呢?

我希望我的值按字符串的数字部分排序,如下所示:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-101
  • ABC-DE-1000
实际发生了什么?

这些值按以下方式排序:

  • ABC-DE-1
  • ABC-DE-10
  • ABC-DE-100
  • ABC-DE-1000
  • ABC-DE-101
我还尝试了什么?

我在html中添加了以下内容,但没有什么不同:

<th class="{sorter: 'CustomParser'}">
    String Value Column
</th>

字符串值列
最后:

以下是表格单元格中的示例值:

<td>
    <span class="badge">ABC-DE-1</span>
</td>

ABC-DE-1

如果正常工作,您只需设置默认排序顺序。我使用了一个元组数组,它包含th索引和顺序(asc=0,desc=1)

工作:


谢谢你的小提琴,让我知道它在工作。当您单击列标题时,您的fiddle在没有“sortList:[[0,0]]”的情况下工作,它只是在加载时不排序。我真的不明白为什么我的代码不起作用。这让我很难堪。我正在使用分页,所以我认为这可能会导致问题。当我删除分页时,我的原始代码工作正常,所以现在我怀疑是分页中的某些东西阻止了它的工作。我使用datatables.net进行分页和筛选,我不知道为什么我不使用datatables.net进行排序。我要去检查一下。好的,我没有弄清楚为什么tablesorter不能使用datatables.net分页,但我已经设法使用datatables.net排序而不是tablesorter。感谢您确认问题不是我的代码。@careywalker更新您上面的帖子,我可以尝试帮助您。您使用的是DataTables还是tablesorter?如果您想继续使用tablesorter,请尝试my,它默认使用字母数字排序。所以在你的例子中不需要特殊的解析器,我同时使用datatables进行分页,tablesorter进行排序。问题是我的自定义表排序器解析器无法处理datatable分页。我不知道为什么我没有使用datatables排序,所以我现在已经将代码切换为使用datatables排序。我在datatables中实现了一个自定义解析器,现在一切正常。因此,这个问题现在是多余的。谢谢你看。
 $("#dataTable").tablesorter({
     sortList: [[0,0]],   
     headers: {
            0: {
                sorter: 'customParser'
            }
        }
    });