2012-07-10 5 views
3

Я пытаюсь показать диаграмму в диалоговом окне jQuery.График высоких диаграмм не отображается в диалоговом окне 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

Вы уверены, что ваш диалог был создан до того, как визуализации диаграммы? Можете ли вы предупредить что-нибудь после открытия диалогового окна и посмотреть, отображается ли оно? –

+0

Я создаю диаграмму сразу после вызова функции .dialog ('open'), как я показал в фрагменте кода выше. Я предполагаю, что диаграмма визуализируется, когда вызывается метод Highcharts.Chart(), и этот метод .dialog() заканчивается перед вызовом конструктора диаграммы. Правильно ли эти допущения? –

ответ

2

Хорошо, я нашел, в чем проблема. Когда создается диалог, он копирует данный элемент и помещает его в тег body. Таким образом, существует более одного элемента с одним и тем же идентификатором. Затем во втором вызове диалог не знает, какой элемент будет отображаться и показывать, чтобы он просто открывается. Исправление состоит в том, чтобы удалить все те элементы, кроме оригинала, из DOM. Мой код выглядит следующим образом:

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

я удалить эти паразитные элементы, такие как, что для совместимости с IE7 (Может быть, все IE7 +)

Смежные вопросы