1

最初の列にカテゴリ名を含む「tablesorter テーブル」があります。アクティブなアクションに応じて特定の「検索」アクションをトリガーするショートカット ボタンを使用して、行をフィルター処理します。

function do_filtering() {
    var category = $('#categories .active a').attr('data-filter-text');
    var columns = [];
    columns[0] = category;
    $('table').trigger('search', [columns]);
}

表の内容は変更になる場合があります。これまで、テーブルで「updateCell」と「search」の 2 つのイベントをトリガーし、適切に更新されました。

これらの呼び出しを分離する必要があります。

  • 「updateCell」は、セル エディターによってトリガーされます (その特定の列のコンテンツの「ソーター」によってアタッチされます)。
  • セルが更新された後に「検索」がトリガーされます。

残念ながら、「updateComplete」ハンドラでのフィルタリングは機能しません。次を参照してください: http://jsfiddle.net/8cg4f/352/

テーブルを更新した後、検索条件を保持するにはどうすればよいですか?

4

1 に答える 1

0

問題は、フィルター入力が空であるため、フィルター ウィジェットが更新後にすべての行を表示していることです。最初の方法ではちらつきが発生するため、2番目の方法がおそらくより良い方法です。

1) コールバックに a を追加しsetTimeoutます。時間は 1 ミリ秒です ( demo ):

    $('td').click(function () {
        resort = false;
        $("table").trigger('updateCell', [$(this).closest('td'), resort, function(table){
            setTimeout(function(){ do_filtering(); }, 1);
        }]);
    });

2) フィルターを更新し、フィルター行を非表示にします ( demo ):

CSS

.tablesorter-filter {
    display: none;
}

コード

function do_filtering() {
    var category = $('#categories .active a').attr('data-filter-text');
    $('.tablesorter-filter:first').val(category).trigger('search');
}

$('td').click(function () {
    resort = false;
    $("table").trigger('updateCell', [$(this).closest('td'), resort, function(table){
        do_filtering();
    }]);
});
于 2013-02-26T00:41:25.453 に答える