将HTML数据属性中的数组转换为Javascript数组

时间:2014-05-27 18:20:55

标签: javascript jquery google-maps

我需要将此数组传递给函数:

[
['ib-marker1', -24.9256,-43.8994, 0],
['ib-marker2', -22.9556,-43.8994, 0]
]

数组需要嵌入HTML中,所以我这样添加:

<div id="map" data-markers="[['ib-marker1', -24.9256,-43.8994, 0],['ib-marker2', -22.9556,-43.8994, 0]]">

然后我接受了这些信息并调用我的函数:

var markers = $(this).find("#map").data("markers"); init(markers);

这是Google地图功能。没有标记被识别。我收集它是因为我的markers变量包含一个字符串,而不是一个真正的数组。我无法弄清楚如何做到这一点。

作为测试,我尝试直接通过变量(不在数据属性中)传递数组,并且它工作正常:

var pins = [['ib-marker1', -24.9256,-43.8994, 0],['ib-marker2',
-22.9556,-43.8994, 0]];

有人可以帮帮我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

考虑到没人发布正确答案作为实际答案,我在这里发布dfsq和Ayyash的答案。这实际上就是诀窍:

var markers = eval($(this).find("#map").data("markers"));

答案 1 :(得分:0)

您必须使用有效 JSON(不是对象 - 文字),然后jQuery可以通过.data("markers")正确解析数据。

有效JSON使用双引号括起字符串(不是单引号):

<div id="map" data-markers="[[&quot;ib-marker1&quot;,-24.9256,-43.8994,0],[&quot;ib-marker2&quot;,-22.9556,-43.8994,0]]"></div>

http://jsfiddle.net/cnG4b/(看看控制台)