破坏jqGrid以避免分离的DOM节点的正确方法是什么?

时间:2014-02-25 16:58:10

标签: jqgrid

我目前面临的情况是,在创建一组新的DOM元素之前,我需要销毁一个包含大量行的jqGrid。我已经尝试过使用jqGrid的GridDestroy方法,但它仍然留下了大量的独立DOM节点,所以我想我可能做错了。

这是我当前的进程仍在离开DOM节点:

$(deleteButton).click(function () {
    $('#grid').jqGrid("clearGridData");
    $('#grid').jqGrid('GridDestroy');
    $('#grid').remove();
    $('#gridContainer').empty();
});

我觉得这个过程太过分了,但它仍然会导致分离的DOM节点。我在jsFiddle(http://jsfiddle.net/8DYD8/1/)中设置了一个示例。

重现的步骤:

  1. 单击“创建”按钮以创建jqGrid
  2. 点击删除按钮
  3. 使用Chrome的调试器>配置文件选项卡获取堆快照,您应该会在快照中看到许多独立的DOM节点
  4. Detached DOM nodes due to jqGrid

1 个答案:

答案 0 :(得分:-1)

根据jqgrid专家@oleg:

  

方法GridDestroy的工作方式与jQuery.remove类似。它删除所有   属于网格的元素包含元素。

     

方法GridUnload另一方面删除所有,但是空    元素留在页面上。所以你可以创建新的网格   在同一个地方。

根据jqGrid wiki:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods

GridDestroy 是您所需要的:

  

从DOM中删除id = grid_id的入口网格(清除所有   与网格关联的html并取消绑定所有事件)