function fncFadeRowIntoTable(pTable,pColumn,pValue, pHtml) {
// Add a row to a table in the correct place, by comparing the contents of the column passed (starts 0).
// This assumes that the table is already sorted
var counter = 0; // so we know when we've reached the end
//
pValue = rtrim(pValue);
$('#'+pTable).find('tbody tr').each(function() {
counter++;
if (rtrim($(this).find('td:eq('+pColumn+')').attr('id')) == pValue) {
// Have we found a cell equal to the the value passed. If so, then remove the row and replace
var $wsRow = $(pHtml);
$wsRow.hide();
$(this).fadeOut(1000,function() {
$wsRow.insertAfter($(this)).hide();
$(this).remove();
$wsRow.fadeIn(1000).css('display', 'table-row');
});
return false; // break out of each() since we're done
}
if (rtrim($(this).find('td:eq('+pColumn+')').attr('id')) >= pValue) {
// Have we found a cell greater than the value passed
var $wsRow = $(pHtml);
$wsRow.hide();
$(this).before($wsRow);
$wsRow.fadeIn(1000).css('display', 'table-row');
return false; // break out of each() since we're done
}
// Handle case where we've reached the end, but we're still in the loop.
// This means the new row is alphabetically last, so insert after
if ($(this).closest('#'+pTable).find('tbody tr').length === counter ) {
var $wsRow = $(pHtml);
$wsRow.hide();
$(this).after($wsRow);
$wsRow.fadeIn(1000).css('display', 'table-row');
}
});
// Handle empty table;
if ($('#'+pTable).find('tbody tr').size() == 0) {
var $wsRow = $(pHtml);
$wsRow.hide();
$wsRow.appendTo('#'+pTable+' tbody');
$wsRow.fadeIn(1000).css('display', 'table-row');
}
}
セルの内容の照合に基づいて、テーブルの行を更新するために使用する関数があります。新しい行を挿入するか、既存の行を更新します。
上記の部分は、一致する行の置換を行います。私が達成したいのは、最初に既存の行をフェードアウトし、次に新しい行をフェードインすることです。
私が得ているのは、新しい行がすぐに表示され、古い行がフェードアウトすることです。.hide()は効果的ではないようですが、行を挿入しているときに.hide()が機能していることはわかっています。
.hide()を$ wsRow.hide();として個別に試しました。また、次のようになります。$ wsRow.insertAfter($(this))。hide(); または上記のように、両方の場所で。
私が間違っていることを考えてください。
注:
pHtmlは完全な行です。つまり、「tr .../tr」データ。