自定义排序jQuery dataTable列

Mat*_*tow 13 javascript sorting datatable jquery

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

<tr>
    <td>NA</td>
</tr>
<tr>
    <td>1024</td>
</tr>
<tr>
    <td>100</td>
</tr>
<tr>
    <td>200</td>
</tr>
<tr>
    <td>300</td>
</tr>
<tr>
    <td>2096</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Anj*_*ani 19

只需data-order<td>元素中使用属性.插件将根据它进行排序.对于您的情况,HTML将是:

<tr>
    <td data-order="-1">NA</td>
</tr>
<tr>
    <td data-order="1024">1024</td>
</tr>
<tr>
    <td data-order="100">100</td>
</tr>
<tr>
    <td data-order="200">200</td>
</tr>
<tr>
    <td data-order="300">300</td>
</tr>
<tr>
    <td data-order="2096">2096</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

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

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


Luc*_*cas 14

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

所以它变成:

<td><a data-internalid="-1">NA</a></td>
Run Code Online (Sandbox Code Playgroud)

和(注意正则表达式)

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));
}});
Run Code Online (Sandbox Code Playgroud)

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

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

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