在dom destroy之后重新创建jquery处理程序/数据

时间:2011-07-20 10:48:22

标签: javascript jquery dom

在元素被销毁之后看起来像jQuery,所有与jQuery相关的数据都被销毁 - 包括用data()保存的值,所有事件处理程序等。但是,dom本身被保留并可以再次使用。我想知道是否有可能以任何简单的方式检索这些数据,或者我是否必须以某种方式自行保存并重新创建它?

用jquery编写的简单示例:http://jsbin.com/examuh/2/edit。你可以在http://jsbin.com/examuh/2看到效果。正如您所看到的,只有第三个处理程序才能正常工作,这是在重新出现后添加的 - 即使是在destroy之后添加的处理程序,但在重新发布之前不起作用。显然,DOM和#id一起被保留。

PS:我的真实例子比较复杂,并且在摧毁父母之前重建它以将dom元素移动到一个安全的地方可能会非常麻烦。

1 个答案:

答案 0 :(得分:2)

如果要保留事件处理程序和jquery数据等,可以使用jQuery方法.detach()从DOM中删除元素。然后,您可以使用标准的.append()/ .prepend()等方法将其重新插入到DOM树中。

如果使用.remove(),则删除jQuery数据。您的示例似乎表明,设置div的html()属性与在jQuery中对div的子元素使用.remove()具有类似的效果。

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