从使用.data()添加的对象字符串中获取值

时间:2016-09-16 11:38:37

标签: javascript jquery html

$db = $m->test;

我想附上上面提到的数据上方的div。当代码执行时,DOM元素#test用更好的数据更新。然后我想从"对象"中获取数据。但是,mydata包含字符串表示。如何将此字符串转换为对象?底线:如何获取键/值对以进行进一步处理? JSON.parse似乎不起作用。谢谢!

http://jsfiddle.net/quint/zyozqwv2/

2 个答案:

答案 0 :(得分:3)

  

JSON.parse似乎不起作用

嗯,那是因为它希望有效 JSON。

{'x-coord': 10}无效JSON - 此处需要双引号,{"x-coord": 10}

一旦你解决了这个问题,你就不需要自己解析了,.data()会自动解决这个问题:

$('#test').attr('data-mydata', '{"x-coord": 10}'); // switched quotes here

var myData = $('#test').data("mydata");
var x = myData['x-coord'];
console.log('x-coord: ' + x); // result: x-coord: 10

http://jsfiddle.net/zyozqwv2/1/

答案 1 :(得分:0)

试试这个,在你的情况下某些编码发生了错误,所以使用JSON.stringify传递json对象并使用JSON.parse方法解析它也是一种最佳实践:)

    $('#test').data('mydata', JSON.stringify({'x-coord': 10}));

    var myData = JSON.parse($('#test').data("mydata"));
    var x = myData['x-coord'];
    console.log('x-coord: ' + x);
#test {
  width: 100px;
  height: 100px;
  background-color: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div id = 'test'></div>