私は、テーブルがソートされる前に追加の処理を行うためのイベントを含むjQueryテーブルソートプラグインを使用しています(そして貢献しています)。もともとブラウザはソート前に再描画を行わなかったので、再描画を強制するプラグインコードにsetTimeout呼び出しを追加しました。したがって、コードは次のようになります。
$table.trigger("beforetablesort", {column: th_index, direction: sort_dir});
setTimeout(function() {
// do the hard work
}, 10);
私のbeforetablesort
コールバックは次のようなものです:
table.bind('beforetablesort', function (event, data) {
$("table").css({opacity: 0.5});
});
上記はすべて正常に動作します。ただし、addClass
インラインスタイルの代わりに使用すると、テーブルが完全に並べ替えられるまで、そのクラスからの変更は表示されません。
table.bind('beforetablesort', function (event, data) {
$("table").addClass('disabled');
});
タイムアウトを500ms以上に増やすと、不透明度が変わります。インラインスタイルの変更とは対照的に、クラスの変更が表示されるまでに少し時間がかかるようです。しかし、ブラウザが再描画の準備ができるまでに、ブラウザはすでにテーブルの並べ替えを行っています。
早めに塗り直しを強制する方法はありますか?または、テーブルの並べ替えコードが実行されるまで再描画するまで待ちますか?タイムアウトを任意に増やすと、すべてのテーブルの並べ替えに少なくとも0.5秒かかるため、適切な解決策とは思えません。(プラグインの完全なコードは、役立つ場合はGithubにあります。)