0

我正在将 JSON 数据转换为列表结构,并且我想将“AAA.BBB[0].CCC.DDD[5].EEE”格式保存为 id,因此当用户修改该列表项的内容时,它会修改与该位置关联的 JSON 数据。

例如 AAA.BBB[0].CCC.DDD[5].EEE = 123

123 是一个列表项,但我希望将 id 保存为“AAA.BBB[0].CCC.DDD[5].EEE”

是否有更好的方法将位置保存在 id 中?

*编辑:

示例代码:

JSON 数据:{"AAA":{"AAB":"Value1","AAC":"Value2","AAD":1,"AAE":"Value3","AAF":"{"ABC":"值4"}}}

Soo 列表项“Value4”的 id 将是 AAA.AAF.ABC

function nodeIT(obj,output){    
for (var x in obj){
    if(!(obj[x] instanceof Object)){

        //var str =JSON.stringify(obj);   // Where im stuck!
        output +="<li id='"+str+x +"'>";
        output += (x + "=" + obj[x] + "<br />");
        output +="</li>";
    }
    else if((obj[x] instanceof Object)){

        var obj1 = obj[x];
        output+="<li>" +x + "<ul>";

        output=nodeIT(obj1,output);
    }

}
output += "</ul></li>";
return output;

}

4

1 回答 1

0

您可以利用 jQuery 的方法,而不是使用 ID 属性并被迫使用单个字符串,.data()该方法可让您将 javascript 对象与 html 元素相关联。

因此,当您构建列表元素时,您可以执行以下操作:

var liElement = $('<li />')
    .text(x + "=" + obj[x])
    .data({
        container: obj,
        key: x
    });

然后像这样访问数据(其中this指的是li):

var container = $(this).data('container');
var key = $(this).data('key');
var value = container[key];
// .. modify value
container[key] = value;

请在此处查看完整示例:http: //jsfiddle.net/h38Ec/

于 2013-03-29T18:42:12.807 回答