自定义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