Morris js 图表加载两次
Morris js chart loads twice
我正在使用 Morris js 绘制基本折线图。这是我的代码:
function getChart(range) {
$.ajax({
type: 'GET',
url: "page.php?doChart=1&range=" + range,
dataType: 'json'
}).done(function(json) {
Morris.Line({
element: 'chart',
data: json.data,
xkey: 'month',
ykeys: json.xkey,
labels: json.label,
parseTime: false
});
});
}
$(document).ready(function() {
getChart('all');
$("#timeRange").on('click', function() {
getChart($(this).data('value'))
});
});
上面的代码在页面加载时工作正常,问题是当我尝试加载不同时期的图表时,使用点击事件。原始容器 ID #chart 正在被替换,但由于某种原因,在 #chart div.
下面创建了相同的图表实例
这样试试:
function getChart(range) {
$("#chart").empty();
$.ajax({
... etc
每次您 运行 Morris.Line 函数时,它都会将一个 <svg>
元素插入到您选择的元素中(在您的例子中是 "chart")。它不会覆盖前一个,它会添加一个额外的。所以你需要先清除旧图表。
查看此演示以演示重复问题:
http://jsbin.com/yelonizoce/1/edit?html,js,output
而这一个是为了演示 .empty();
的用法
http://jsbin.com/xinegovoqo/1/edit?html,js,output
我正在使用 Morris js 绘制基本折线图。这是我的代码:
function getChart(range) {
$.ajax({
type: 'GET',
url: "page.php?doChart=1&range=" + range,
dataType: 'json'
}).done(function(json) {
Morris.Line({
element: 'chart',
data: json.data,
xkey: 'month',
ykeys: json.xkey,
labels: json.label,
parseTime: false
});
});
}
$(document).ready(function() {
getChart('all');
$("#timeRange").on('click', function() {
getChart($(this).data('value'))
});
});
上面的代码在页面加载时工作正常,问题是当我尝试加载不同时期的图表时,使用点击事件。原始容器 ID #chart 正在被替换,但由于某种原因,在 #chart div.
下面创建了相同的图表实例这样试试:
function getChart(range) {
$("#chart").empty();
$.ajax({
... etc
每次您 运行 Morris.Line 函数时,它都会将一个 <svg>
元素插入到您选择的元素中(在您的例子中是 "chart")。它不会覆盖前一个,它会添加一个额外的。所以你需要先清除旧图表。
查看此演示以演示重复问题: http://jsbin.com/yelonizoce/1/edit?html,js,output
而这一个是为了演示 .empty();
的用法
http://jsbin.com/xinegovoqo/1/edit?html,js,output