2013-10-04 107 views
5

这里的tablesorter自定义分析器是我的自定义解析器:jQuery的 - 不工作

$.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> 
+0

您使用的数据表或的tablesorter?如果你想继续使用tablesorter,试试我的[fork of tablesorter](http://mottie.github.io/tablesorter/docs/),默认情况下它使用字母数字排序。所以在你的情况下不需要特殊的解析器。 – Mottie

+0

我同时使用了用于分页的分页和tablesorter的数据表。问题是我的自定义tablesorter分析器不能使用数据表分页。我不知道为什么我没有使用数据表排序,所以我已经切换我的代码来使用数据表排序。我在数据表中实现了一个自定义分析器,现在一切正在运行。 因此,这个问题现在是多余的。谢谢你看看。 –

回答

3

它的工作,你只需要设置默认排序顺序。我使用了sortList.,它是包含th索引和顺序(asc = 0,desc = 1)的元组数组。

工作fiddle

$("#dataTable").tablesorter({ 
    sortList: [[0,0]], 
    headers: { 
      0: { 
       sorter: 'customParser' 
      } 
     } 
    }); 
+0

感谢小提琴展示它的工作。当你点击列标题时,你的小提琴没有“sortList:[[0,0]]”,它只是不加载排序。我不明白为什么我的代码不工作。所以这让我难住。我正在使用分页,所以我认为这可能会导致一个问题。当我删除分页我的原始代码工作正常,所以现在我怀疑这是在分页,这阻止了它的工作。 我正在使用datatables.net进行分页和过滤,我不知道为什么我还没有使用datatables.net进行排序。我去检查。 –

+0

好吧,我没有弄清楚为什么tablesorter不能使用datatables.net分页,但我设法使用datatables.net排序而不是tablesorter。 感谢您确认这不是我的代码问题。 –

+0

@careywalker更新您的帖子,我可以尝试帮助你。 – Nix