2014-11-20 3 views
0

Я пытаюсь отобразить и обновить диаграмму с помощью плагина http://workshop.rs/jqbargraph/. Плагин запускается при загрузке страницы, но мне нужно разрешить пользователям обновлять данные, которые поддерживают диаграмму. Однако эта функция добавляет несколько диаграмм каждый раз, когда инициируется событие обновления. Я предполагаю, что мне нужно как-то уничтожить исходный экземпляр плагина, прежде чем обновлять данные диаграммы и повторно инициировать его, но в плагин нет ничего, чтобы это разрешить.jquery предотвращает несколько экземпляров плагина

Может ли кто-нибудь сказать мне, что мне нужно добавить в мой код, чтобы заставить это работать?

  jQuery(document).ready(function() { 

        var chartData = new Array([0]); 
        showChart(chartData);     

        jQuery('#update').live("click", function() { 
         var qtyArr = []; 

         jQuery('input[name=qty]').each(function(i) { 

           qty = Number(jQuery(this).val()); 

           if(qty > 0){ 
           qtyArr.push(qty); 
           } 

         }); 



         chartData = new Array(
          [qtyArr] 
         ); 

         showChart(chartData); 
        }); 

       }); 

       function showChart(chartData){ 

        jQuery("#chart").jqBarGraph({ 
         data: chartData, 
         width: 200, 
         height: 300 
        });    
       } 

ответ

1

вызов empty() перед вызовом плагина:

jQuery("#chart").empty().jqBarGraph({ 
    data: chartData, 
    width: 200, 
    height: 300 
}); 
+0

Я добавил empty(), но это, похоже, не имеет значения – LeeTee

+1

доказательство того, что оно действительно работает: http://jsfiddle.net/qrdwknzx/ – lloiser

+0

Привет, я только что обновил вашу скрипку, чтобы включить заголовок на диаграмме, это показывает репликацию кода. http://jsfiddle.net/qrdwknzx/1/ – LeeTee

1

демонстрационная страница плагина очищает таблицу, и восстанавливает его следующим образом:

$('#exampleSimple').html(''); 
$('#exampleSimple').jqbargraph({ data: arrayOfData }); 

.empty() также должны работать.

Вы, вероятно, хотите -

function showChart(chartData) { 
    $('#chart').empty().jqBarGraph({ 
     data: chartData, 
     width: 200, 
     height: 300 
    }); 
} 
+0

Пытались, используя первый пример, но это не делает разницы. попробовал 2-й, и я понял, что «ясность не является функцией» – LeeTee

+0

Doh! Мой плохой, это '.empty()' not '.clear()' - отредактирован. –

+0

Это тоже не работает, см. Обсуждение ниже. – LeeTee

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