2012-04-24 139 views
1

有谁知道是否有可能使用Jquery.clone();函数在Flot图表上?克隆jquery浮图

var $clonedChart = $this.find('.chart-area').clone(); 
$('#details').append($clonedChart); 

基本上,我只是想克隆一个图表,并在用户查看“详细视图”时在模态窗口中使用它。我可以看到画布,但不幸的是,画布的内容不会呈现。有没有办法让他们出现?我假设我需要做一些奇特的深层克隆来抓取插件,然后重新渲染图形?我希望避免,但不知道这是可能的...

谢谢!

回答

0

如果图表不是互动的,你应该只是克隆画布而不用担心Flot插件。

function cloneCanvas(oldCanvas) { 

    //create a new canvas 
    var newCanvas = document.createElement('canvas'); 
    var context = newCanvas.getContext('2d'); 

    //apply the old canvas to the new one 
    context.drawImage(oldCanvas, 0, 0); 

    //return the new canvas 
    return newCanvas; 
} 

Code copied from another SO question

+0

我只是需要一种方法来捕捉整个图表并将其追加到另一种观点。我不想让所有的东西都重新出现...... – gabaum10 2012-04-24 17:37:46

+0

好吧,我无法想出一个更好的解决方案,所以我最终只是在新的divs中重新渲染图形并添加它们。我不打算关闭这个,有人可能有一个很好的解决方案。如果没有,我会给你这个标志。谢谢! – gabaum10 2012-04-24 17:55:50

+0

我希望你找到一个更优雅的解决方案,但是我做的一些测试 - 关于克隆一个画布 - 失败了。以上可能确实是你唯一的选择。 – lalibi 2012-04-24 18:01:15

1

clone()clone()不会复制所有的事件处理程序,您最好将包含代码的$.flot调用到方法中,并在需要将其显示在其他位置时再次调用它。