实际场景是这样的: info = [{name:"tom",age:22},{name:"jim",age:23}]; var html = ''; for (var i = 0;i<info.length;i++) { html +='<a href="javascript:;" class="J_edit" data-role='+info+'>edit</a>'; } $("body").append(html); $(".J_edit").click(function() { var data = $(this).attr("data-role"); alert(data.name); }); 比如点了第一个edit就可以获取到第一组的json的name,就是tom,点了第二个就是jim
关键是怎样把info = [{name:"tom",age:22},{name:"jim",age:23}]; 转化为字符串。如果info是json串, var $data = $("#foo").data("role");出来时jQuery会自动转换(用jQuery.parseJSON 也就是JSON.parse) 如果不是还要手动处理。
$info = {name:"tom",age:22};
$("body").html("<div id='foo'>111</div>");
$("#foo").data('role',$info);
var $data = $("#foo").data("role");
alert($data.name);
只是jQuery给人一个错觉。
要不这样
info = {name:"tom",age:22};
var $a = JSON.stringify(info);
$("body").html("<div id='foo' data-role="+$a+">111</div>");
var $data = $("#foo").data("role");
https://github.com/douglascrockford/JSON-js/blob/master/json2.js
info = [{name:"tom",age:22},{name:"jim",age:23}];
var html = '';
for (var i = 0;i<info.length;i++) {
html +='<a href="javascript:;" class="J_edit" data-role='+info+'>edit</a>';
}
$("body").append(html);
$(".J_edit").click(function() {
var data = $(this).attr("data-role");
alert(data.name);
});
比如点了第一个edit就可以获取到第一组的json的name,就是tom,点了第二个就是jim
转化为字符串。如果info是json串,
var $data = $("#foo").data("role");出来时jQuery会自动转换(用jQuery.parseJSON 也就是JSON.parse)
如果不是还要手动处理。