2012-04-24 101 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調用到方法中,並在需要將其顯示在其他位置時再次調用它。