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 字符串并在最后只做一个附加会更有效。在这种情况下,我通常是这样进行的:

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 只更改一次。

于 2012-10-01T06:23:41.060 回答