3

jQuery tablesorterプラグインを使用して、14列のテーブルを並べ替えています。ただし、時々、14列すべてにまたがる行を挿入する必要があります。しかし、これは並べ替え機能を壊しているようです(最初の列だけが並べ替えられ、他のすべての列は壊れています)。

JavaScriptエラーは、jquery.tablesorter.jsがこのreturnステートメントで失敗していることを示しています。

function getCachedSortType(parsers,i) {
    return parsers[i].type;
};

行を無視するように並べ替える方法を知っている人はいますか?

これが私の現在のコードです(私は物事を単純化するためだけに最初の2列をソートしていません):

$("#myTableId").tablesorter({
    textExtraction: function(node){
        var cellValue = $(node).html();
        return (cellValue == null ? "" : cellValue);
    },
    headers: {
        0: {sorter:'text'},
        1: {sorter:'text'},
        2: {sorter: false},
        3: {sorter: false},
        4: {sorter: false},
        5: {sorter: false},
        6: {sorter: false},
        7: {sorter: false},
        8: {sorter: false},
        9: {sorter: false},
        10: {sorter: false},
        11: {sorter: false},
        12: {sorter: false},
        13: {sorter: false}
    }
});
4

2 に答える 2

3

プラグイン用のプラグインがあります:

https://github.com/ascii-soup/Tablesorter-Static-Row-Plugin

sortStart別の方法として、tablesorterプラグインのandバインディングを使用するとsortEnd、並べ替え前に行にまたがる列を削除する関数と、並べ替え後に行を追加する関数があります。上記のプラグインは、すべての列にまたがる行では機能しないため、2つの組み合わせが必要です。

これはそれを行う1つの方法です-ソートの前に一時的にcolspanを削除して列を追加し、ソート後に変更を元に戻します(すべての列にまたがる行にクラスがあると想定しますfullSpan)。

$("#myTableId").bind("sortStart",function() { 
        var colCount = getColCount();
        $('tbody .fullSpan').each(function() {
            $(this).removeAttr('colspan');
            for (var i= 0; i < colCount; i++) {
                 $(this).append('<td class="temptd"></td>');
            }
        }); 
}).bind("sortEnd",function() { 
        var colCount = getColCount();
        $('.temptd').remove();
        $('tbody .fullSpan').each(function() {
                 $(this).attr('colspan', colCount);
        });
}); 

必要に応じて、これを静的行プラグインと組み合わせることができます(ウィジェットとstaticクラスを追加します)。

このjsfiddleを見てください:http://jsfiddle.net/DrZgM/20/

PS静的行プラグインには最新のJQueryのバグがあります-上記のJSfiddleに埋め込まれています。

于 2012-10-16T21:52:34.453 に答える
0

この問題は、バージョン2.3以降で修正されました。この説明を見てください

于 2013-11-07T09:40:26.073 に答える