2012-07-10 39 views
3

我試圖在jQuery對話框中顯示圖表。Highcharts圖表不顯示在jQuery對話框中

我真的這樣做,但只有第一次。當我重新加載頁面並顯示對話框時,我只得到一個空白空間。這是我的代碼:

function() { 
    var dialog = $('#div_id').dialog({ 
     'autoOpen': false, 
     'closeOnEscape':true, 
     'buttons':[{ 
     'text':'OK', 
     'click': function() { $(this).dialog('close'); } 
     }], 
     'modal':true 
    }); 
    $("#show_dialog_button").click(function() { 
      dialog.dialog('open'); 
      var chart = Highcharts.Chart({/*some configs here*/}); 
      var jqChart = $("#"+chart.options.chart.renderTo); 
     HighchartsHelper.autoResizeChart(jqChart,chart); 
    } 
} 

我希望有人可以提供幫助。

+0

你確定你的對話已經被它呈現圖表之前創建的? 打開對話框後,你能提醒一些事情,看看它是否呈現? – 2012-07-10 17:38:55

+0

我在.dialog('open')函數調用之後創建了圖表,正如我在上面的代碼片段中所示。我認爲在調用Highcharts.Chart()方法並且在調用圖表構造函數之前.dialog()方法完成時會呈現圖表。這些假設是正確的嗎? – 2012-07-10 22:35:07

回答

2

好吧,我已經找到了問題所在。當創建一個對話框時,它會複製給定的元素並將其放入body標籤中。因此,有多個具有相同ID的元素。然後在第二次調用時,對話框不知道要獲取和顯示哪個元素,所以它只是打開。解決方法是從DOM中除去原始元素之外的所有元素。我的代碼如下所示:

$("[id='dialog_element']").not("#dialog_parent>#dialog_element").remove(); 

我刪除這些寄生元素,例如,對於兼容IE7(或許所有IE7 +)