@H_4030@<span style="font-size: medium">一、清空元素的区别
@H403_0@
1、错误做法一:
@H_4030@ $("#test").html("");//该做法会导致内存泄露
@H403_0@
2、错误做法二:
@H_4030@ $("#test")[0].innerHTML=""; ;//该做法会导致内存泄露
@H4030@
3、正确做法:
@H4030@
//$("#test").empty();
@H4030@<span style="font-size: medium">
二、原理:
@H403_0@在 jQuery 中用 innerHTML 的方法来清空元素,是必然会导致内存泄露的,由于 jquery 对于同一元素多事件处理没有直接采用浏览器事件模型,而是自己缓存事件,遍历触发,以及便于 trigger 程序触发 :
<div class="jb51code">
<pre class="brush:js;">
// Init the element's event structure
var events = jQuery.data(elem,"events") || jQuery.data(elem,"events",{}),handle = jQuery.data(elem,"handle") || jQuery.data(elem,"handle",function(){
// Handle the second event of a trigger and when
// an event is called after a page has unloaded
return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
jQuery.event.handle.apply(arguments.callee.elem,arguments) :
undefined;
});