1

我知道我在这里遗漏了一些非常简单的东西,但我已经搜索了一段时间,但没有找到任何解决方案。

我有一些看起来像这样的 json 数据

post[{
//various post data
categories": {

    "Rants": {
        "name": "Rants",
        "slug": "rants",
        "description": "",
        "post_count": 9
}]

我正在尝试使用each()循环返回类别 slug

$.each(response.posts[0].categories, function (index) {
                alert(response.posts[0].categories.index.slug);
});

它在我调用时有效,alert(response.posts[0].categories.rants.slug);但在我尝试使用索引作为键时无效。

有任何想法吗?

4

4 回答 4

2

当你写这个:

alert(response.posts[0].categories.index.slug);

您正在尝试读取不存在的categories被调用属性。"index"如果您真的想阅读每个元素,则必须编写以下内容:

alert(response.posts[0].categories[index].slug);
于 2013-03-10T10:34:21.773 回答
1

它应该是

 alert(response.posts[0].categories[index].slug);

更多详情

jQuery 会为您解决这个问题。回调函数的第一个参数.each()是循环当前迭代的索引。第二个是当前匹配的 DOM 元素所以:

$('#list option').each(function(index, element){
  alert("Iteration: " + index)
});

编辑 1

这是eachapi链接
http://api.jquery.com/each/

于 2013-03-10T10:33:33.723 回答
1
$.each(response.posts[0].categories, function(name, category) {
    alert(category.slug);
});
于 2013-03-10T10:29:21.717 回答
0

There's no need for jQuery here. It looks like it is only getting in your way. Simply do:

alert(response.posts[0].categories.Rants.slug);

Or to loop over all of the "rants" (category in categories):

for (var category in response.posts[0].categories) {
  alert(response.posts[0].categories[category].slug)
}
于 2013-03-10T10:32:37.580 回答