国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

清空元素html("") innerHTML="" 與 empty()的區別和應用(推薦)

2024-05-06 15:13:01
字體:
來源:轉載
供稿:網友

一、清空元素的區別

     1、錯誤做法一:

           $("#test").html("");//該做法會導致內存泄露

     2、錯誤做法二:

           $("#test")[0].innerHTML="";  ;//該做法會導致內存泄露

     3、正確做法:

        //$("#test").empty();       

二、原理:

在 jQuery 中用 innerHTML 的方法來清空元素,是必然會導致內存泄露的,由于 jquery 對于同一元素多事件處理沒有直接采用瀏覽器事件模型,而是自己緩存事件,遍歷觸發,以及便于 trigger 程序觸發 :

// 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;   }); 

采用 data 方法,將一些數據關聯到了元素上面,上述事件即是采用該機制緩存事件監聽器。

那么就可以知道,直接 innerHTML=“” 而不通知 jquery 清空與將要刪除元素關聯的數據,那么這部分數據就再也釋放不了了,即為內存泄露。

remove: function( selector ) {  if ( !selector || jQuery.filter( selector, [ this ] ).length ) {   // Prevent memory leaks   jQuery( "*", this ).add([this]).each(function(){   jQuery.event.remove(this);   jQuery.removeData(this);   });   if (this.parentNode)   this.parentNode.removeChild( this );  }  },  empty: function() {  // Remove element nodes and prevent memory leaks  jQuery(this).children().remove();   // Remove any remaining nodes  while ( this.firstChild )   this.removeChild( this.firstChild );  }

  以上就是小編為大家整理的清空元素html("")、innerHTML="" 與 empty()的區別和應用的全部內容啦~希望能夠幫助到各位朋友~~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 黔东| 桃园市| 太原市| 河池市| 阳西县| 邹平县| 天气| 抚松县| 永定县| 东莞市| 张家界市| 怀来县| 南京市| 兴化市| 孙吴县| 乌拉特中旗| 楚雄市| 双牌县| 崇文区| 额敏县| 泸州市| 获嘉县| 五河县| 屏东市| 正阳县| 昭苏县| 平泉县| 海城市| 土默特右旗| 陇南市| 阿鲁科尔沁旗| 东兰县| 儋州市| 札达县| 湾仔区| 温宿县| 南漳县| 大名县| 八宿县| 通江县| 定南县|