如何使用数据表

时间:2015-11-23 06:57:33

标签: jquery html sorting

如何对包含图像和编号的第二列进行排序。

<table id='tb' class="table table-bordered table-striped table-hover">
    <tr>
        <td>status</td>
        <td><img src='edit.png'>1</td>
    </tr>
    <tr>
        <td>status</td>
        <td><img src='edit.png'>2</td>
    </tr>
    <tr>
        <td>status</td>
        <td><img src='edit.png'>3</td>
    </tr>
</table>

我试过这样,因为那个图像它排序为1,10,11,12 ..如果我删除那个图像标签,它就会正确排序。所以请给出一些解决方案。

$("#tb").dataTable({
    "order": [
        [1, "asc"]
    ]
});

3 个答案:

答案 0 :(得分:2)

在包含HTML5 data attributes的当前版本的dataTables中,排序更加灵活。

将数据排序或数据顺序属性附加到td标记允许您自定义表中所有类型的dom对象的排序顺序。

<table id='tb' class="table table-bordered table-striped table-hover">
    <tr>
        <td>status</td>
        <td data-order='1'><img src='edit.png'>1</td>
    </tr>
    <tr>
        <td>status</td>
        <td data-order='2'><img src='edit.png'>2</td>
    </tr>
    <tr>
        <td>status</td>
        <td data-order='3'><img src='edit.png'>3</td>
    </tr>
</table>

答案 1 :(得分:1)

由于图像标记,它将作为字符串排序。它将开始使用它看到的第一个文本进行排序,因此我解决这个问题的方法是通过附加带有数值的隐藏跨度。您只需记住将所有值设置为相同的长度,因为它们仍将按字符串排序。您可以通过附加0来完成此操作。

一个例子[假设我知道我的号码永远不会超过100]:

<td><span style="display:none">024</span><img src='edit.png'>24</td>
...
<td><span style="display:none">001</span><img src='edit.png'>1</td>
...
<td><span style="display:none">033</span><img src='edit.png'>33</td>
...
<td><span style="display:none">051</span><img src='edit.png'>51</td>

升序排序,即使是字符串,也会产生1,24,33,51

答案 2 :(得分:0)

基于@Guruprasad Rao评论和插件文档(http://datatables.net/plug-ins/sorting#hidden_title_string),您必须创建自己的过滤器。像这样:

过滤代码:

/* Create an array with the values of all the input boxes in a column */
$.fn.dataTable.ext.order['dom-inner-text'] = function  ( settings, col )
{
    return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {
        return td.text();
    } );
}

然后在datatable init函数中:

$('#example').DataTable( {
    "columns": [
        null,
        { "orderDataType": "dom-inner-text" },
        ....
    ]
} );