jquery - 调用函数在事件声明中返回json字符串

时间:2013-10-30 10:29:04

标签: javascript jquery json

我正在使用一个名为MapSVG的插件,我正在制作一个活动日历与它一起运行,地图上的国家会突出显示,如果其中有活动,并提供小信息的工具提示 - 点击后,各国会进一步显示右侧面板中的信息。 问题在于从SQL数据库收集数据,并将该数据传递给插件。这是我到目前为止所尝试的......

我有一个函数,它通过SQL / JSON数组匹配事件到他们所在的国家,创建一个MapSVG插件可以理解的字符串:

function regions(data) {
  var region_array = 'regions: {';

  $.each(data['regions'], function( i, v ) {
    region_array = region_array + i + ': { tooltip: "' + v['events'] + ' events in ' + data[i]['details']['name'] + '", attr:{fill: "#e58271"} },';
  });
  region_array = region_array.slice(0, -1) + '}';
  return region_array;
}

返回一个字符串:

regions: 
{
gb: { tooltip: "1 events in England", attr:{fill: "#e58271"} },
fr: { tooltip: "2 events in France", attr:{fill: "#e58271"} },
de: { tooltip: "1 events in Germany", attr:{fill: "#e58271"} },
at: { tooltip: "6 events in Austria", attr:{fill: "#e58271"} }
}

此字符串在直接复制到MapSVG时可正常工作,但我需要它以动态方式运行,并根据添加/删除/编辑/扩展的事件进行更改。

所以,我原以为在mapSvg事件/声明中运行函数会起作用,但是我遇到了问题..

$('#mapsvg-other').mapSvg({
  source : 'maps/europe.svg',
  colors: {background: '#CBECF3', base: '#eeaba0', stroke: "#CBECF3", selected: '#d42e12', hover: '#d42e12'},
  regions: {labels: {attr: {fill: '#555555'}}},
  width: '450px',
  height: '450px',
  tooltipsMode: 'custom',
  cursor: 'pointer',


  onClick: function(e,m){

  },
  /* regions goes into here, regions(data) or + regions(data) + will not work, is there a way to do this? */     
});    

有没有办法正确插入此信息?或者我是否必须生成一个包含每个区域信息的数组并单独调用? (似乎有一个更糟糕的解决方法,因为它意味着稍微冗长的代码,所以在追求不断提高的效率和整洁度,让这项工作变得更好!)

0 个答案:

没有答案