Цель jqPlot, у которой нет статического идентификатора - PullRequest
2 голосов
/ 16 января 2012

Я просто играю с jqplot в течение нескольких часов, но я не могу найти, как указать цель более конкретным способом jquery. например, если у меня есть HTML-код:

<div id="chart"></div>

Я могу создать график, используя

 $.jqplot("chart", [], {});

и он создаст диаграмму для элемента с id: chart.

Я хочу использовать что-то вроде этого:

$("#chart").jqplot([], {});

или

 $(".multiple_charts").jqplot([], {});

или

var myChart=$("<div></div>");
myChart.jqplot([], {});

Я видел, что эта проблема уже была предложена в 2009 году здесь: https://bitbucket.org/cleonello/jqplot/issue/114/jqplot-target-should-accept-any-element

Есть ли решение для того, что я ищу? Спасибо

Ответы [ 2 ]

5 голосов
/ 16 января 2012

Посмотрев на код , вы действительно увидите, что $.jqplot принимает только идентификатор целевого элемента в качестве первого аргумента, так что вы правы в этом.

Однако $.fn.jqplot также определено, что означает, что вы можете использовать $(".multiple_charts").jqplot(); или $("<div></div>").jqplot();. Обратите внимание, что jqplot создает уникальный идентификатор для каждого элемента в объекте jquery, если он еще не существует.

О, похоже, версия, которую я посмотрел, еще не вышла , но вы можете просто взять последний код и сделать обходной путь.

1 голос
/ 11 апреля 2014

Просто чтобы проследить

HTML

 <div id="chart2" class="test2" style="margin-top:20px; margin-left:20px; width:460px; height:300px;"></div>

Данные

var data1 = [
            ['Verwerkende industrie', 9], 
            ['Retail', 3], 
            ['Primaire producent', 4], 
            ['Out of home', 2], 
            ['Groothandel', 7], 
            ['Grondstof', 9], 
            ['Consument', 3], 
            ['Bewerkende industrie', 2]
        ];

, поэтому вместо этого

var plot2 = $.jqplot($('chart2'), [ data1 ], {
            title: ' ', 
            seriesDefaults: {
                shadow: false, 
                renderer: jQuery.jqplot.PieRenderer, 
                rendererOptions: { 
                    startAngle: 180, 
                    sliceMargin: 4, 
                    showDataLabels: true
                } 
            }, 
            legend: { 
                show:true, location: 'w' 
            }
        }
    );

Вы можете сделатьэто

$(".test2").jqplot( [data1] , {
            title: ' ', 
            seriesDefaults: {
                shadow: false, 
                renderer: jQuery.jqplot.PieRenderer, 
                rendererOptions: { 
                    startAngle: 180, 
                    sliceMargin: 4, 
                    showDataLabels: true
                } 
            }, 
            legend: { 
                show:true, location: 'w' 
            }
        }
    );
...