自定义jQuery dataTable列的排序

我有一个包含数字列和NA的表。

 NA   1024   100   200   300   2096  

我正在尝试使用jQuery dataTable对列进行排序以生成以下内容:

NA,100,200,300,1024,2096 2096,1024,300,200,100,NA

但无法弄清楚如何通过阅读排序和插件文档来做到这一点。

我在这里创建了一个代码的小提琴: http : //jsfiddle.net/stowball/rYtxh/并且非常感谢一些帮助。

通过查看带有HTML插件的Numbers,您可以获取现有代码并修改正则表达式以查找负数而不是剥离所有内容。 使用它可以在“NA”周围放置一个HTML标记,并使用HTML5 data-internalid存储最低数量的集合。

所以它变成:

 NA 

和(注意正则表达式)

 jQuery.extend( jQuery.fn.dataTableExt.oSort, { "num-html-pre": function ( a ) { var x = String(a).replace(/(?!^-)[^0-9.]/g, ""); return parseFloat( x ); }, "num-html-asc": function ( a, b ) { return ((a < b) ? -1 : ((a > b) ? 1 : 0)); }, "num-html-desc": function ( a, b ) { return ((a < b) ? 1 : ((a > b) ? -1 : 0)); }}); 

然后在数据表中,将类型设置为num-html

 $('table').dataTable({ "aoColumns": [{ "sType": "num-html" }], "aaSorting": [[ 0, "desc" ]], }); 

你可以在这里看到我的完整解决方案: http : //jsfiddle.net/rYtxh/4/

只需在

元素中使用data-order属性即可。 插件将根据它进行排序。 对于您的情况,HTML将是:

  NA   1024   100   200   300   2096  

更多HTML5属性可用于解决过滤,排序,搜索等问题。

https://datatables.net/examples/advanced_init/html5-data-attributes.html