2011-07-13 77 views
0
[{"pk": 1, "model": "social.thing", "fields": {"content": "this is good", "visible": true, "user": 1, "parent": [2], "title": "hat i like"}}, {"pk": 5, "model": "social.thing", "fields": {"content": "because must be good", "visible": true, "user": 1, "parent": [2], "title": "another good thing"}}] 

是否有可能从我的列表中的某个字典中追加某个DOM元素单个值?例如,如何从这个列表中选择"pk":1字典列表从字段中获取单个值

+0

你想从sttring/list中选择''pk':1'还是试图得到'pk'的值? –

+0

试图从上面的数组中获得“pk:1” – krzyhub

+0

您向我们展示的数据中的DOM因素在哪里?什么是“某些DOM元素单值”? “选择”是什么意思? –

回答

2

您可以通过索引[0]访问主阵列中的第一个对象,然后通过.pk访问pk属性的值。

var arr = [{"pk": 1, "model": "social.thing", "fields": {"content": "this is good", "visible": true, "user": 1, "parent": [2], "title": "hat i like"}}, {"pk": 5, "model": "social.thing", "fields": {"content": "because must be good", "visible": true, "user": 1, "parent": [2], "title": "another good thing"}}]; 

alert(arr[0].pk); // 1 

例子:http://jsfiddle.net/FBjuW/

...或者你可以在循环外阵列得到每个指标在pk值。

for(var i = 0, len = arr.length; i < len; i++) { 
    alert(arr[ i ].pk); 
} 

例子:http://jsfiddle.net/FBjuW/1/

我不知道你在说什么的DOM元素,但你可以得到的价值附加到你的元素,如果你需要。


编辑:

如果你正在做一个DOM选择和需要附加每个结果的pk价值发现,你可以这样做:

$('.mySelector').append(function(i) { return arr[ i ].pk; }); 

这将使用append()[docs]方法并将函数传递给它。返回值是被追加的值。

i参数表示迭代期间当前匹配元素的索引号。

+0

但是,例如,如果我通过jetJSON获取数据对象,我可以把它像数组吗? – krzyhub

+0

@Cris:是的,如果您使用'getJSON',那么jQuery将确保文本结果被解析为正确的JavaScript结构。 – user113716

+0

...我可以通过将标记放入String中并使用'$ .parseJSON'将其解析为所需的结构来模拟此行为。 http://jsfiddle.net/nCg7H/ – user113716

1

使用jQuery,您可以访问每个“PK”的值:

$.each(arr, function(index, value) { 
    if(value.pk) 
     alert(value.pk); 
}); 
1

如果想获得“PK”的值应该能够使用像字符串和对象。 您可能必须使用JSON和字符串化进行一些转换。

该字符串表示一个对象。 每组{}是另一个具有自己属性的对象。

var o = [{"pk": 1, "model": "social.thing", "fields": {"content": "this is good", "visible": true, "user": 1, "parent": [2], "title": "hat i like"}}, {"pk": 5, "model": "social.thing", "fields": {"content": "because must be good", "visible": true, "user": 1, "parent": [2], "title": "another good thing"}}]; 

alert(o.pk); 
alert(o.fields[0].title);