【问题标题】:Destroying jQuery Flot Graph销毁 jQuery Flot 图表
【发布时间】:2013-04-07 01:44:11
【问题描述】:

以清除所有事件处理程序且不会导致内存泄漏的方式销毁 jQuery 浮点图的正确方法是什么?

flot 似乎留下了一些僵尸(又名分离的 Dom 树)

【问题讨论】:

  • $.plot('#yourFlotDiv', {}, {}); 在某处阅读。不记得具体在哪里。

标签: jquery flot


【解决方案1】:

如果您阅读 API 文档,有一个关闭方法可以为您清理

shutdown()

Cleans up any event handlers Flot has currently registered. This
is used internally.

例如。

var plot = $.plot($("#yourDiv"), options)

plot.shutdown()

【讨论】:

    【解决方案2】:

    对于以后来这里的人来说,现在有一个destroy 函数调用shutdown 并移除canvas 元素。由于某种原因,它在 API 中没有记录,但在代码中可用:

    var flot = $("#FlotDiv").data('plot')
    if (flot) // If it's destroyed, then data('plot') will be undefined
        flot.destroy();
    

    【讨论】:

      【解决方案3】:

      如果您想删除事件处理程序,请尝试jquery off 方法。

      用于清除浮动图。你可以清空div。

      $('#yourFlotDiv').empty();
      

      【讨论】:

      • 应该将哪些参数传递给 jQuery.off()?
      • @thecountofzero $("#yourFlotDiv").off("yourEventHandlerTORemove");欲了解更多信息,请参阅api.jquery.com/off
      • 我说的是确保 flot 清理它所有的事件处理程序并删除它创建的所有 DOM 元素。
      【解决方案4】:

      删除浮动图

      var placeholder = $("#FlotDiv");
      placeholder.unbind(); //Remove a previously-attached event handler from the elements.
      placeholder.empty();
      

      如果您希望取消绑定特定事件,这也是可行的方法:

      $( "#foo").unbind( "click" );
      

      更多信息请查看this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        相关资源
        最近更新 更多