我有一个JSON文件,如下所示:
{entries:[{title:‘foo’,id:‘01’,created:‘2010-12-06’},{title:‘bar’,id:‘02’,created:‘2010-12-05’}]}
而且我还有一个html文件,它使用jQuery从服务器获取上面的json文件。并显示信息。
<div id='list'>
<li><p id="01">foo</p></li>
<li><p id="02">bar</p></li>
</div>
现在,我想使用jQuery,当我点击一个项目时,例如“foo”,首先从我的JSON文件中找到此条目,然后在JSON数据中进行一些更改。目前我是堆栈的第一件事,当点击该项目,在JSON文件中找到正确的条目,任何人都可以帮忙吗?感谢。
答案 0 :(得分:1)
假设您已经解析了JSON字符串,您必须遍历数组以获取相应的项目:
$('#id p').click(function() {
var entries = json.entries;
var item = null;
for(var i = entries.length;i--;) {
if(entries[i].id == this.id) {
item = entries[i];
break;
}
}
// so something with item
});
但是每次在数组上循环都没有效率。更好的是创建某种哈希表(它只是JavasScript中的一个对象(就像其他一切;)))并且只需查找id。这意味着您必须预处理返回的JSON:
var items = {};
var entries = json.entries;
for(var i = entries.length;i--;) {
var entry = entries[i];
items[entry.id] = entry;
}
以后你可以通过以下方式获得相应的项目:
var item = items[this.id];
// item will be undefined if `this.id` is not present in `items`
附注:您的HTML无效,li
元素必须以ul
或ol
作为父级。