如何在动态表更新后刷新整个表排序缓存?

时间:2015-02-24 16:53:04

标签: javascript jquery sorting

我正在使用JoeQuery的Stupid-Table jQuery插件对一个简单的表进行排序。我不知道如何在动态表上刷新整个排序缓存。

updateSortVal功能允许更新单个单元格。例如:

$age_td.updateSortVal(23);

但是,当替换整个theadtbody时,如何刷新整个表?

这是我的代码:

$.ajax({
    ...
    success: function(data) {
        $("#myTable thead, #myTable tbody").empty();
        if (data.data.length > 0) {
            var $thead_tr;
            var $tbody_tr;
            for (var r = 0; r < data.data.length; r++) {
                if (r == 0) $thead_tr = $("<tr>").appendTo("#myTable thead");
                    $tbody_tr = $("<tr>").appendTo("#myTable tbody");
                    for (var c in data.data[r]) {
                        if (r == 0) $("<th>").html(c).appendTo($thead_tr);
                        $("<td>").html(data.data[r][c]).appendTo($tbody_tr);
                        // I've tried adding `.updateSortVal(data.data[r][c]);`
                        // to the above as well, but the cache for the `th`
                        // needs to be re-cached as well, so let's do it all at once
                    }
                }
                // I'd like to refresh the entire stupidtable cache here
                $("#myTable").stupidtable().show();
            }
        }
    }    
});

1 个答案:

答案 0 :(得分:2)

也许你应该基本上删除你的表而不是清空它,然后重新创建它以重置合适的(例如,宽度replaceWith())

$("#myTable").replaceWith('<table id="myTable"><thead></thead><tbody></tbody></table>');

而不是

$("#myTable thead, #myTable tbody").empty();

修改

由于我不确定你所谓的缓存,我做了这个小提琴。 如果你重现问题,你能检查一下并解释一下吗?

Fiddle demo here