使用HTML数据标记和jQuery存储和使用数组

wil*_*ill 37 html arrays jquery

我试图在HTML数据标记中存储一个数组.例如:

<div data-locs="{'name':'London','url':'/lon/'},{'name':'Leeds','url':'/lds'}">
Run Code Online (Sandbox Code Playgroud)

我正在使用jQuery访问该数据.我意识到这是存储为一个字符串,我已经尝试了各种方法将其转换为数组,但我已经碰壁了.如果你看看这个jsFiddle页面,你会看到我正在尝试做的一个完整的例子.

http://jsfiddle.net/B4vFQ/

有任何想法吗?

谢谢!

Nic*_*ver 77

如果您使用有效的JSON([]为阵,双引号,而不是单一的),就像这样:

<div id="locations" data-locations='[{"name":"Bath","url":"/location/bath","img":"/thumb.jpg"},{"name":"Berkhamsted","url":"/location/berkhamsted","img":"/thumb.jpg"}]'>
Run Code Online (Sandbox Code Playgroud)

那么你有什么(使用.data())来获得数组将工作:

$('#locations').data('locations');
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下.

  • +1我没有意识到jQuery会自动为你解析JSON.你碰巧知道如何检测它吗?或者它只是做一个`try/catch`.编辑:没关系,看起来像是'try/catch`. (2认同)
  • @cambraca - 如果浏览器支持它是的,但有些东西必须调用`JSON.parse()`(如果JSON在那里,jQuery会这样做),你可以在这里看到它:https://github.com/jquery /jquery/blob/master/src/data.js#L203-218 (2认同)
  • 一个小问题:你需要单引号来包含data-foo html属性和双引号以获得有效的JSON.使用有效的JSON(我只是在php中使用json_encode()生成它)然后你将数据本身中的任何双引号转义为\".但是,如果你在数据本身中有任何单引号(我的数据包括可以的名称,对于例如,是O'Connor)然后整个事情都崩溃了,因为只有json到单引号的部分被计为属性值.用\'逃避不起作用,但似乎html实体这样做.例如str_replace ("'","&#8217",json_encode($ foo)) (2认同)

jwu*_*ler 5

尝试在开始和结束处添加[and ](这使其成为有效的JSON)。这样做之后,您可以用于JSON.parse()将其转换为本地JavaScript对象。