Comment lancer fancybox de button onclick event pour dessiner Google Chart?

Pouvons-nous dessiner un graphique Google dans une boîte à lettres pop-up?

J’ai des données affichées dans un tableau, et il y a un bouton dans chaque ligne pour montrer le graphique Google de chaque enregistrement.

Actuellement, mon graphique est toujours affiché en bas après le tableau, mais lorsque vous faites défiler l’enregistrement au-dessus de l’écran, vous devez faire défiler l’écran jusqu’en bas pour obtenir l’affichage graphique. Est-il possible d’utiliser Fancybox ou d’une manière quelconque pour résoudre cet inconvénient?

Merci pour tout conseil!

html:

 ... 
data

js:

 function drawPieChart(dataArr, elementId) { //dataArr : the data to display //elementId : 
element where to display chart var data = google.visualization.arrayToDataTable(dataArr); var chart = new google.visualization.PieChart(document.getElementById(elementId)); chart.draw(data, options); } function showChart(){ //alert("readyState=" + xhr2.readyState); if(xhr2.readyState == 4) { if(xhr2.status == 200){ var allEmp = xhr2.responseText; var empList = JSON.parse(allEmp); ... prepare pieChartDate[] to draw chart ... //create
to displaying chart in it $('.secondary').html('
'); drawPieChart(pieChartData[0], "chart_div"); ... } function showChartByEmpId(){ var url = '/CMP/employee/emp.do'; //create XMLHttpRequest xhr = createXHR(); if( xhr == null ){ alert("no xhr creted"); return; } var requestData = "action=getOneEmpJSON&empId1=" + escape(empId1) + "&empId2=" + escape(empId2); xhr.open('POST', url, true); xhr.onreadystatechange = showChart; xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send(requestData); }

Ce que je ferais:

1). cacher la div .secondary

  

2) atsortingbuer un sélecteur de classe à chaque bouton comme

  

3) lie un événement de click à each bouton, puis affiche le contenu de #chart_div dans fancybox après sa création.

 jQuery(function ($) { $(".doPiechart").each(function (i) { $(this).on("click", function () { showChartByEmpId(i); $.fancybox("#chart_div"); }); // on click }); // each }); 

Notez que vous devrez peut-être modifier votre fonction showChartByEmpId() pour transmettre l’index de la méthode .each() et éventuellement inclure un rappel pour afficher fancybox une fois l’opération terminée.

Voir un comportement simulé dans JSFIDDLE avec fancybox v2.x

REMARQUE : .on() requirejs jQuery v1.7 +