0

内のすべてのコンテンツをリロードする関数がありますtable

現在、テーブルの行を削除して再度追加すると、テーブルが折りたたまれます。

以前のテーブル サイズを保持し、操作が完了したら「解放」する方法はありますか?

function loadValues() {

    $('#tableId tbody').empty(); // Table rows are being removed here

    $.post("page.php?action=getValues",
        {},
        function(dataT) {

            for ( var i in dataT) {

                var data = dataT[i];

                $('#tableId tbody').append(
                    '<tr>'
                        + '<td>data.id</td>'
                        + '<td>data.other</td>'
                    '</tr>'
                );
            }

        }
        ,"json"
    );

}
4

1 に答える 1

2

これを行う場合:

function loadValues() {
    $.post("page.php?action=getValues",
        {},
        function(dataT) {
            $('#tableId tbody').empty(); // Table rows are being removed here
            for ( var i in dataT) {
                var data = dataT[i]; 
                $('#tableId tbody').append(
                    '<tr>'
                        + '<td>data.id</td>'
                    '</tr>'
                );
            }
        }
        ,"json"
    );
}

テーブルが崩れません。これは、ユーザー スクリプトの実行中にウィンドウが更新されないためです。最初のバージョンでは、サーバーの応答を待っている間にユーザー スクリプトを停止する必要があったため、折りたたまれていました。


パフォーマンスが必要で、多くの行を追加する場合の詳細: 大きな html 文字列を作成し、最後に追加を 1 つだけ行う方が効率的です。この場合、通常は次のように進めます。

function loadValues() {
    $.post("page.php?action=getValues",
        {},
        function(dataT) {
            var html = '';
            for ( var i in dataT) {
                var data = dataT[i]; 
                html += '<tr>'
                    + '<td>'+data.id+'</td>'
                '</tr>'
                ;
            }
            $('#tableId tbody').html(html);
        }
        ,"json"
    );
}

その後、DOM は 1 回だけ変更されます。

于 2012-10-01T06:23:41.060 に答える