我需要使用下面的jQuery用新的Html替换tbody
。当Html高于1Mb时,.empty()函数会挂起。
$("#searchForm").submit(function (event) {
event.preventDefault();
//$("#myTable tbody").empty();
$.post($(this).attr('action'), $(this).serialize(), function (data) {
//$("#myTable tbody").html(data);
replaceTableBody("thebody", data);
});
});
我不担心这是否是一个棘手的解决方案,我只是想让它发挥作用...... 我尝试了这个,但无法让它工作:replacehtml-for-when-innerhtml-dogs-you-down。
它只需要在IE中工作。
编辑
var replaceTableBody = function(tbodyId, html){
var temp = document.createElement('div');
temp.innerHTML = '<table><tbody id="thebody">'+html;
var tb = document.getElementById(tbodyId);
tb.parentNode.replaceChild(temp.firstChild.firstChild, tb);
temp = null;
};
答案 0 :(得分:2)
我写了一篇很长的博客文章,关于这个以及它是如何完成的,它很长,所以我不会把它粘贴在这里,只是链接它:
http://notetodogself.blogspot.com/2009/08/javascript-insert-table-rows-table-body.html
你必须不使用jquery 的原因是,一旦你将文本传递给.html(),jquery会做某些事情,比如搜索脚本,执行它们,修复某些东西等等。这通常是一个好东西,但IE上 1mb的文字并不是一件好事。
答案 1 :(得分:0)
如果你第一次删除tbody的所有行,如$('#myTable tbody')。remove()而不是调用$('#myTable tbody')。empty().... if删除行后,最后一步是必要的......
答案 2 :(得分:0)
尝试使用.each()并单独删除每一行。
$(“tbody tr”)。each(function(){$(this).remove();}); 我认为jquery是对的,但它是基本的想法。
答案 3 :(得分:0)
根据jQuery API文档:
When .html() is used to set an element's content, any content that was in that element is completely replaced by the new content.
在更新empty()
之前,您是否需要致电tbody
?