2011-07-20 21 views
0

它看起來像在jQuery元素被銷燬後,所有與jQuery相關的數據被銷燬 - 包括用data()保存的值,所有事件處理程序等。但是,dom本身是保存並可以再次使用。我想知道是否有可能以任何簡單的方式檢索這些數據,或者我必須自己保存它並重新創建它?jquery處理程序/數據重建後dom銷燬

簡單的例子寫在jquery:http://jsbin.com/examuh/2/edit。你可以在http://jsbin.com/examuh/2看到效果。正如你所看到的,只有第三個處理函數可以工作,它在重新工作之後添加 - 即使是在破壞之後添加的那個,但在重新發生之前不起作用。顯然,DOM和#id一起被保留。 PS:我真正的例子是更復雜的,並重新將它移動到一個安全的地方,然後摧毀父母將可能相當麻煩。

回答

2

如果您想保留事件處理程序和jquery數據等,您可以使用jQuery方法.detach()從DOM中刪除元素。然後,您可以使用標準的.append()/ .prepend()等方法將其重新插入DOM樹中。

如果使用.remove(),那麼jQuery數據將被刪除。你的例子似乎證明了設置div的html()屬性與在div的子元素上使用jQuery中的.remove()具有類似的效果。

var keepThis = $("#toRemove").detach(); 
//.. later on 
$("#insert-point").append(keepThis); 
+0

謝謝,它解釋了發生了什麼。由於我不知道在刪除後面可能需要哪些子元素,我將我的數據存儲在其他地方存儲在由dom id標識的其他地方,並在需要時重新附加。 – trakos