日期:2014-05-16  浏览次数:20570 次

关于jquery append和appendto效率的问题--急等求解
这两个方法实现的功能基本一致,但是,是否存在谁的执行效率高,谁的执行效率低的问题呢?
你们是否遇到过append一个比较大的字符串(包括dom),是否有导致ie崩溃的现象?你们又是如何解决的呢?
有人这么说:用appendTo如果发现内存无法释放的时候可以在appendTo之前释放一些出来 免得IE内存不够导致崩溃,我再这两个使用过程,没发现太大的效率问题,请问高手有过相关经验么?谢谢


------解决方案--------------------
append , appendTo 的效率问题倒没有研究过,不过他们的实现原理应该是一样吧 ~ 

曾经将 4000 条数据记录 append 到一个 table 中, 如果用 js 遍历组装, 还真会出现 IE 崩溃的现象,如果你先在后台将要显示的记录组装好,然后返回到前台的是一个需要 append 的 html , 那么就不会出现IE崩溃的现象了 ~~~ 

个人观点 ,仅供参考 ~~
------解决方案--------------------
返回的是一个 html , 如:
 StringBuffer buffer = new StringBuffer();
 buffer.append( "<table>" );
 buffer.append( "<tr><td>"+result+"</td></tr>");
 buffer.append( "</table>" );
 ...

 不要放到 js 中去拼装 ~
------解决方案--------------------
探讨
这两个方法实现的功能基本一致,但是,是否存在谁的执行效率高,谁的执行效率低的问题呢?
你们是否遇到过append一个比较大的字符串(包括dom),是否有导致ie崩溃的现象?你们又是如何解决的呢?
有人这么说:用appendTo如果发现内存无法释放的时候可以在appendTo之前释放一些出来 免得IE内存不够导致崩溃,我再这两个使用过程,没发现太大的效率问题,请问高手有过相关经验么?谢谢

------解决方案--------------------
千万别用append或appendTo
我已经吃一堑长一智了,内存直线飙升,最后不得以使用dom.innerHTML='?';来做的
之后一定要记得dom.innerHTML='';清空,否则内存释放不出来.
------解决方案--------------------
下边是我对于jquery释放内存的一些总结,希望对你有用


//每次在ajax时后用这个即时清理
$.ajaxSetup({cache:false});

//自定义扩展用来清理节点
$.fn.removeNode = function(){
var d;
return function(){
if(this[0] && this[0].tagName != 'BODY'){
d = d || document.createElement('div');
d.appendChild(this[0]);
d.innerHTML = '';
}
}
}();


$(window).unload(function(){
cn=null;
delete cn;
if($.browser.msie){CollectGarbage();}
document.body.innetHTML='';
document.innetHTML='';
$('div').removeNode();
$('table').removeNode();
$('p').removeNode();
$('ul').removeNode();
$('body').removeNode();
});
------解决方案--------------------
学习了,一般没出现ie崩溃,也就没注意。。。
------解决方案--------------------
这个真没研究过
但是我不认为写jquery这个级别封装的程序员会没有考虑内存释放问题
6楼的收藏了,以备以后需要的时候查询,thanx
------解决方案--------------------
sibang说的好