2012-06-02 53 views
0

假設我創建使用$('some html')的元素,像這樣:jQuery的:內存管理的新的臨時DOM元素

var imgSrc = determineImageURL(); 
var myImg = $('<img>', { src: imgSrc })[0]; // Creates a new <img>. 

我的問題是:

  • 誰是新元素的父? 文件號窗口?沒有?這對所有瀏覽器都一樣嗎?
  • 假設我需要多次運行該代碼,並且每次計算可能不同的imgSrc。當myImg被更改或當前函數返回時,新元素是否變成垃圾(並且可能會被收集)?或者我必須保留一個單獨的<img>並且只更改src屬性?

回答

3

myImg的父項取決於您將其附加到的位置。只給出你引用的代碼,它是沒有的。

當函數返回時,如果您沒有將節點附加到函數中的父項,則新元素將被垃圾回收。

變量聲明var只能在函數範圍內生存,除非您創建對它的其他引用(附加到父項或在閉包中引用)。