1

我使用 jQuery 数据表插件对表数据进行排序。如果列包含简单文本,则排序工作正常。如果我在文本上放置任何锚标记条件,则列排序不会正确排序。

我以以下方式显示值:

<td><?php if ($allAptArr[$d][27]['staffinactive'] == 1) { ?>
        <?=ucwords(stripslashes($allAptArr[$d][5]['staff_name']));?>
    <?php } else { ?>
        <a href='#' onClick="redirectToStaff('<?=$allAptArr[$d][10]['staff_id']?>');">
        <?=ucwords(stripslashes($allAptArr[$d][5]['staff_name']));?>
        </a>
<?php } ?> </td>

使用此代码,列排序失败。

4

8 回答 8

6

在 ready 函数之前添加:

    //sets up numeric sorting of links
    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 || isNaN(y) ) ? -1 : ((x > y || isNaN(x)) ? 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 || isNaN(x)) ? 1 : ((x > y || isNaN(y) ) ? -1 : 0));
    };

并在准备功能:

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

这就是我使用锚点的方式,整数按应有的顺序排列。

于 2012-11-20T16:20:59.863 回答
4

将列类型设置为“html”:

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

这将在排序前去除 HTML 标签。

请参阅sType 参数的文档

于 2012-01-09T00:38:23.737 回答
1

这对于答案来说已经很晚了,但它仍然对其他读者有所帮助,你可以采取一个虚拟专栏。还隐藏该虚拟列并按虚拟列对实际列进行排序。假设我有三列,然后将第四列添加为 dummy 并将其放入数据表调用中

$('#example').dataTable({ "aoColumns": [null, null, {"iDataSort":3 }, { "bVisible": false}]);
于 2013-06-26T07:28:43.197 回答
1

当涉及链接时,我只是在使用数据表进行排序时遇到了问题——我有一列在某些单元格中有链接,而在其他单元格中没有链接。它似乎是在排序,但它是先排序所有链接,然后再排序所有非链接,而不是同时将链接和非链接排序。问题原来是标记中的间距。当我去掉任何 a 标签周围的所有非必要间距时,我的列排序完美。

于 2010-06-30T09:31:28.777 回答
1

我使用DataTables HTML5 数据属性来获取包装在锚标记中的可排序日期的所需功能。

这是许多表格单元格之一的 HTML 片段:

<td data-order="20180115"><a href="#">01/15/2018</a></td>
于 2018-01-15T17:32:06.277 回答
0

我认为这是因为您没有将锚点与同一列中的锚点数据混合。您也不应该使用 onClick,尤其是 jquery,只需使用正确的选择器设置一个 click() 函数。

于 2009-12-14T08:01:32.270 回答
0

正如这些家伙所说,并非您放入 tds 的所有内容都是可排序的。例如,需要专门禁用链接。下面的代码片段将禁用表中第一列的排序。

<script type="text/javascript">
$(document).ready(function ()
{
    $('#example').dataTable({
            "aoColumnDefs":[{"bSortable": false, "aTargets": [0]}]});
});
</script>
于 2011-02-11T23:08:59.557 回答
0

我的数据表有 2 列,第一列有<a>元素,我试图对我的第一列进行排序,但排序不起作用。我尝试了很多方法但没有奏效,所以我添加了一个隐藏列,@Html.Raw该列绑定到我绑定到的相同模型属性<a>并在我的隐藏列上排序。请看下面的链接

Jquery/JavaScript:对具有 <a> 的列上的数据表进行排序

于 2017-01-24T22:39:03.413 回答