1

テーブルデータの並べ替えに jQuery datatable プラグインを使用しました。列に単純なテキストが含まれている場合、並べ替えは正常に機能します。テキストにアンカー タグ条件を設定すると、列の並べ替えが正しく行われません。

次の方法で値を表示しました。

<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

リンクが含まれているときにデータテーブルを使用した並べ替えに問題がありました.一部のセルにリンクがあり、他のセルにはリンクがない列がありました. ソートしているように見えましたが、リンクと非リンクの両方を一緒にソートするのではなく、すべてのリンクをソートしてからすべての非リンクをソートしていました。問題は、マークアップの間隔であることが判明しました。タグの周りの不要なスペースをすべて取り除くと、列が完全にソートされました。

于 2010-06-30T09:31:28.777 に答える
0

みんなが言ったように、tds に入れたすべてのコンテンツがソート可能というわけではありません。たとえば、リンクは明確に無効にする必要があります。以下のコード スニペットは、テーブルの最初の列の並べ替えを無効にします。

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

同じ列にアンカーデータとアンカーデータを混在させているためだと思います。また、特に jquery では onClick を使用しないでください。正しいセレクターで click() 関数をセットアップするだけです。

于 2009-12-14T08:01:32.270 に答える