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() 메서드가 완료된다고 가정합니다. 그 asumptions가 맞습니까? –

답변

2

좋아, 문제가 무엇인지 확인했습니다. 대화 상자가 생성되면 주어진 요소를 복사하여 body 태그에 넣습니다. 따라서 동일한 ID를 가진 요소가 두 개 이상 있습니다. 그런 다음 두 번째 호출에서 대화 상자는 어떤 요소를 가져와 표시할지 모르기 때문에 방금 열립니다. 수정 사항은 원래 요소를 제외한 모든 요소를 ​​DOM에서 제거하는 것입니다. 내 코드는 다음과 같습니다

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

나는 IE7 (어쩌면 모든 IE7 +)은 차트를 렌더링하기 전에

관련 문제