jQuery – datatable插件 – 排序问题

我正在使用http://datatables.net上的 DataTables插件。
它自己的插件是非常有用的,但我有一个很大的问题。

它以下列格式返回某些搜索的地址列表。

1 Main Street 12 Main Street 13 Main Street 14 Main Street ... 2 Main Street 3 Main Street 4 Main Street 5 Main Street .. 

正如您所看到的那样,排序不是我所期望的。 将返回以1 eg, 11, 111, 1111开头的所有数字, 1 eg, 11, 111, 1111之前的1 eg, 11, 111, 1111

你有没有对插件有所了解?

  • 知道解决这个排序问题吗?
  • 或者知道在第一次启动时禁用排序的方法(显示数据,因为它来自db)?

任何建议非常感谢。

要解决此特定问题,您可以对数据表使用自然排序插件。 在http://datatables.net/plug-ins/sorting上阅读所有相关内容(搜索“自然排序”)。

简而言之,如果您已下载并嵌入了naturalSort函数,则可以为数据表定义排序句柄,如下所示:

 jQuery.fn.dataTableExt.oSort['natural-asc'] = function(a,b) { return naturalSort(a,b); }; jQuery.fn.dataTableExt.oSort['natural-desc'] = function(a,b) { return naturalSort(a,b) * -1; }; 

您还需要为列指定sSortDataType参数,以告诉它使用哪个插件函数(在下面的示例中,我将排序设置为自然的表格的第三列):

 $('#example').dataTable( { "aoColumns": [ null, null, { "sType": "natural" } ] }); 

这是工作小提琴http://jsfiddle.net/zhx32/14/

注意:事实上,“aoColumns”中的元素数量似乎必须等于表中的列数,否则您将收到错误。 空值表示datatables插件应该对该列使用默认排序方法。

你应该使用一个排序插件 ,如下所示:

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

然后在aoColumns中指定该类型

  "aoColumns": [ null, null, null, { "sType": "num-html" }, null ]