1

問題

私はTablesorterプラグインを使用して、エンド ユーザーの生活を改善しています。「スクローラー」ウィジェットと「フィルター」ウィジェットを同時に有効にするのに数時間費やしました。問題は、両方が有効になっている場合、ドロップダウン セレクターがテーブルの結果をフィルター処理できないことです。

問題を説明するためにフィドルを作成しました。


回避策

change(私は思う)ドロップダウン セレクターのイベントでイベント リスナーが壊れていることに問題を絞り込みました。

ドキュメントによると、現在のフィルターを取得するためにいくつかの方法が利用可能です。

私が実行すると:

$.tablesorter.getFilters( $('table') );

フィルター値の配列を返します。ただし、ドロップダウン セレクターは常に空の文字列です。

一方、実行すると:

$.tablesorter.setFilters( $('table'), [ 'Some Value', '', '', '' ], true );

その後、フィルターが更新され、テーブルが期待どおりにフィルター処理されます。

最終的には、独自のイベント リスナーを作成し、フィルターを更新して、新しいパラメーターで検索しました。

$('someselector').on('change', 'select', function(event) {
    var table = $('sometableselector'),
        filters = $.tablesorter.getFilters( table );

    filters[Number($(this).attr('data-column'))] = $(this).val();
    $.tablesorter.setFilters( table, filters, true );
});

質問

バグを見つけましたか、それとも何か間違ったことをしているだけですか?

4

1 に答える 1

1

この$.tablesorter.getFilters()メソッドは、(スクローラー ウィジェットによって作成された) 複製されたスクローラー ヘッダーを調べることを認識していないため、期待どおりに動作しません。

getFilters()関数はヘッダーの重複をチェックするほどスマートではないため、バグと呼ぶことができると思います。先に進んで問題を追加したので、サビトカルから戻ったら忘れずに修正します。

于 2013-08-31T14:25:00.420 に答える