2009-11-06 45 views
4

我想繪製一個jQuery手風琴內的圖形,但它會導致圖形斬波,並顯示比例。任何人都得到了解決這個問題?jq繪製手風琴圖

+0

碼?你嘗試了什麼。什麼失敗了?如何/爲什麼? – jitter 2009-11-07 01:40:53

回答

6

由於jqPlot的Tab and Accordion UI Widgets頁的說明,jqPlot需要知道當它繪製圖表的大小,它可以這樣做,如果該圖由手風琴或標籤隱藏。解決方法是以另一種方式指定圖表的尺寸,或者在手風琴展開時調用replot。有關完整的詳細信息和示例代碼,請參閱Tab and Accordion UI Widgets

3

手風琴中的一切都隱藏起來,直到它被展開,這意味着它是無量綱的。您需要等到手風琴圖表所在的DOM部分顯示出來,然後繪製圖表。如果你看一下列入jqPlot最新發布的ui.html例子,你會看到這一點:

這裏,在一個名爲chart1 DIV,這是一個隱藏的jQuery UI的選項卡中創建的情節:

plot1 = $.jqplot('chart1', [l1, l2, l3], { 
    title: "I was hidden", 
    lengend:{show:true}, 
    series:[{},{yaxis:'y2axis'}, {yaxis:'y3axis'}], 
    cursor:{show:true, zoom:true}, 
    axesDefaults:{useSeriesColor:true} 
}); 

然後事件處理程序註冊了由jQUery UI Tab觸發的'tabsshow'事件。就你而言,在完成改變手風琴的狀態之後,你會想爲jQuery UI Accordion小部件觸發的'accordionchange'事件註冊一個處理程序。這裏是你如何綁定到該選項卡的「tabsshow」事件上面的代碼示例:

$('#tabs').bind('tabsshow', function(event, ui) { 
    if (ui.index == 1 && plot1._drawCount == 0) { 
    plot1.replot(); 
    } 
    else if (ui.index == 2 && plot2._drawCount == 0) { 
    plot2.replot(); 
    } 
}); 

還有與手風琴一樣ui.html文件的工作示例。你可以在這裏的bitbucket的最新版本中找到這個例子:jqplot.1.0.0a_r701

另外,請確保你沒有在同一個div上實例化多個jqPlot對象,或者你的圖將坐在另一個之上,瀏覽器。

+0

出於某種原因,'ui.index ==#'不適合我。在jQuery網站上,他們使用'ui.index ===#'。再次,這對我沒有用,所以我用'ui.newHeader.text()==「JQPlot」'(我使用jquery 1.9.1,jui 1.10.3和jqplot 1.0.8)希望這個信息可以幫助某人 – Chopo87 2013-07-12 12:13:33

1

隱藏元素,例如標籤或手風琴元件沒有大小,所以你可能想使用:jqplot的文檔中提到的技術,即

  1. 提供在可替換的方式的曲線圖的尺寸(例如。數據高度和數據寬度屬性)AND
  2. 當圖形顯示時調用replot()。

然而,文檔中的示例使用2.可以是不正確使用您的jQuery UI的版本事件名稱。例如,如果使用Bootstrap 3,則適當的事件具有不同的名稱:「shown.bs.tab」。

鏈接:

+0

只包含鏈接的答案是[認爲不好的做法](http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers)。請總結這裏的內容(不要複製/粘貼),這樣答案就可以獨立運作。如果你不這樣做,那麼你的答案就會被刪除,特別是如果鏈接死亡的話。 – 2015-07-06 10:04:09