1
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」データ。

4

1 に答える 1

0

あなたのコードはChromeとIE8で機能し、既存の行がフェードアウトしてから新しい行がフェードインします-http://jsfiddle.net/x3JYz/1/

干渉している可能性のある他のコードはありますか?

于 2012-08-24T11:32:51.953 に答える