私の例では、すぐにクリックするとクラスbusy
が本文に追加されます。これにより、背景が赤くなります。私はその後、各ループが完了した後にこのクラスを削除します。jquery addClassが正しい順序で適用されていません
実際に起こっているのは、ループが完了してすぐに削除されると、クラスbusy
が追加されているということです。ループ内でremoveClass
という条件を削除した場合、クラスbusy
が追加され、追加されたままになっているため、これが当てはまると思います。理由はわかりません。私はこの問題に1時間以上立ち往生し、完全な停止状態にあります。
フィドルの例では、列をクリックします3.
フィドルhttps://jsfiddle.net/2nvopbqo/3/
$(".sort").click(function() {
$('body').addClass('busy');
var col = $(this).parent().children().index($(this));
var desc = $(this).hasClass('desc');
var date = $(this).hasClass('date');
sortTable(desc, col, date);
$(this).toggleClass("desc asc");
});
function sortTable(order, col, date) {
var rows = $('#mytable tbody tr').get();
rows.sort(function(a, b) {
var A = $(a).children('td').eq(col).text().toUpperCase();
var B = $(b).children('td').eq(col).text().toUpperCase();
if (date) {
var A = A.split("-").reverse().join('-');
var B = B.split("-").reverse().join('-');
}
if (order) {
if (B < A) return -1;
if (B > A) return 1;
} else {
if (A < B) return -1;
if (A > B) return 1;
}
return 0;
});
var totalRows = rows.length;
$.each(rows, function(index, row) {
$('#mytable').children('tbody').append(row);
if (index == totalRows - 1) $('body').removeClass('busy');
});
}
すべてのブラウザで動作させるには、50ms程度の時間がかかることがあります。 FFは1msで反応しないようです – Sergiu