jQuery数据表-仅排序编号

jQuery数据表-仅排序编号,jquery,datatables,jquery-datatables,Jquery,Datatables,Jquery Datatables,使用1.10.1和新的数据排序html5属性,我想忽略排序顺序中的某些单元格 我的列混合了数字和文本值。例如: <tr><td data-sort="100.50">100.50 USD</td></tr> <tr><td data-sort="">Text</td></tr> <tr><td data-sort="50.00">50.00 USD</td><

使用1.10.1和新的数据排序html5属性,我想忽略排序顺序中的某些单元格

我的列混合了数字和文本值。例如:

<tr><td data-sort="100.50">100.50 USD</td></tr>
<tr><td data-sort="">Text</td></tr>
<tr><td data-sort="50.00">50.00 USD</td></tr>
100.50美元
正文
50.00美元
在此列上排序时,我希望忽略文本单元格。所以降序是100,50,文本。升序为50100,文本


我是否可以仅使用数据排序属性来完成此操作,或者是否有其他方法?

仅使用
数据排序
数据顺序
恐怕无法完成此操作。DataTables将尝试进行升序/降序排序,而您真正需要的实际上是纯文本字段的两个不同排序值,使它们成为最高值或最低值

但是,您是否认为可以使用自定义排序插件来实现这一点?请参阅以下插件,该插件从列中提取任何数字,或者如果没有数字,则将排序值设置为
number.负无穷大
(排序降序)或
number.正无穷大
(排序升序),因此纯文本列始终被推到底:

函数sortNumbersIgnoreText(a、b、高){
变量reg=/[+-]?(\d+(\.\d*)?)\.\d+([eE][+-]?[0-9]+)?/;
a=a.匹配(reg);
a=a!==null?parseFloat(a[0]):高;
b=b.匹配(reg);
b=b!==null?parseFloat(b[0]):高;
回报率((ab)?1:0);
}
extend(jQuery.fn.dataTableExt.oSort{
“排序编号忽略文本asc”:函数(a、b){
返回sortNumbersIgnoreText(a,b,Number.正无穷大);
},
“排序编号忽略文本描述”:函数(a、b){
返回sortNumbersIgnoreText(a,b,Number.NEGATIVE_无穷大)*-1;
}
});
已更新。代码被清理,插件现在可以对任何类型的数字进行排序,即

  • 整数,比如123
  • 十进制数,比如123.45
  • 负数和正数,如-123.00,+123
  • 科学数字,如12.3e+10
  • 非法数字,比如012345

请参见演示->

它不是通过
数据排序来实现的吗?看到这个->或者我误解了吗?@davidkonrad嘿,你的例子的文本数据在排序中位于顶部。我只想按数字排序,文本单元格总是在底部。是的,我确实误解了:)我想出了一个方法来实现你想要的,但不确定它是否足够+一个伟大的问题@马克·斯泰格尔斯提出了一个新的答案。现在,该插件对整数、非法数字和科学数字进行了分类,代码已经被大量清理。这真是太棒了,谢谢!正是我想要的:)