【发布时间】:2014-09-27 01:46:05
【问题描述】:
抱歉,这似乎是一个愚蠢的问题……但这实际上是预期的行为吗?
我将数据存储在某个元素上:
$('#source-list li.active').data('relation-text', textEditor.value());
稍后元素从一个列表移动到另一个列表:
$('#source-list li.active').remove().appendTo('#target-list')
就在 'remove()' 'data()' 返回预期值之前。 remove()之后,数据就没了。
我知道如何解决这个问题...但我觉得这很奇怪 - 这是预期的行为吗?
【问题讨论】:
-
当然,您从 DOM 中完全删除了该元素。与之相关的数据自然会被删除。如果你想保留数据,只需隐藏元素而不是直接删除它。
-
是的,这是设计使然。如果您打算重新附加元素并希望同时保留其关联数据,请使用
detach()而不是remove()。 (请注意,在您的特定情况下,您甚至不必删除元素 - 只需调用append(),它会将元素移动到其新容器下而不克隆它)。 -
非常感谢 Frédéric,这就是答案 - 使用 .detach() 和 .appendTo() 数据不会丢失。只有 '.appendTo()' (没有前面的 '.remove()' 数据仍然会丢失。但是 '.detach().appendTo()' 有效 :) 再次感谢!
标签: javascript jquery dom-manipulation