我正在尝试将数组存储在HTML数据标记中。例如:
<div data-locs="{'name':'London','url':'/lon/'},{'name':'Leeds','url':'/lds'}">
我正在使用jQuery访问该数据。我意识到这是存储为一个字符串,我已经尝试了各种方法将其转换为数组,但我已经碰壁了。如果你看看这个jsFiddle页面,你会看到我正在尝试做的一个完整的例子。
有什么想法吗?
谢谢!
答案 0 :(得分:77)
如果对数组使用有效的JSON([
和]
,请使用双引号而不是单引号,如下所示:
<div id="locations" data-locations='[{"name":"Bath","url":"/location/bath","img":"/thumb.jpg"},{"name":"Berkhamsted","url":"/location/berkhamsted","img":"/thumb.jpg"}]'>
然后你所拥有的(使用.data()
)来获取数组将起作用:
$('#locations').data('locations');
答案 1 :(得分:4)
尝试将[
和]
添加到开头和结尾(这使其成为有效的JSON)。执行此操作后,您可以使用JSON.parse()
将其转换为本机JavaScript对象。
答案 2 :(得分:-1)
如果您出于某种原因坚持使用双引号,则需要对数据属性中的引号进行 html 编码。
<div data-dwarfs="["Doc", "Sneezy", "Happy"]"></div>
当然,如果您可以访问 PHP 或其他一些预处理器,则可以使用以下内容:
<?php
$dwarfs = ['Doc', 'Sneezy', 'Happy'];
?>
<div data-dwarfs="<?php echo htmlspecialchars(json_encode($dwarfs), ENT_QUOTES, 'UTF-8') ?>"></div>
<?php
答案 3 :(得分:-2)