删除()和追加()后jquery .data丢失

时间:2014-08-04 14:35:04

标签: javascript jquery dom-manipulation

抱歉,这似乎是一个愚蠢的问题......但这实际上是预期的行为吗?

我将数据存储在某个元素上:

$('#source-list li.active').data('relation-text', textEditor.value());

稍后元素从一个列表移动到另一个列表:

$('#source-list li.active').remove().appendTo('#target-list')

在'remove()之前''data()'返回预期值。删除()后,数据消失了。

我知道如何解决这个问题......但对我来说这似乎很奇怪 - 这是预期的行为吗?

2 个答案:

答案 0 :(得分:3)

我认为,从Jquery Documentation

来判断
  

.data()方法允许我们以一种不受循环引用和内存泄漏安全的方式将任何类型的数据附加到DOM元素。

Ergo,即使您仍然可以引用它,因为DOM元素已被删除,与之关联的数据已被删除。

答案 1 :(得分:0)

你可以根据JQuery使用.detach():

  

.detach()方法与.remove()相同,除了.detach()保持>与删除的元素关联的所有jQuery数据。当删除的元素稍后要重新插入DOM时,此方法非常有用。

var div = $("div").detach();

$(div).appendTo("body");