1

我已经'jItems'使用$.getJSON. 在页面上,我有一个 jItems 中的项目适合的类别列表。我的愿望是单击一个类别并触发一个功能以仅显示该类别中的项目。getJson使用jqueryeach()find()从中提取正确的项目会更好jItems吗?

4

2 回答 2

1

JSON 的美妙之处在于您不需要解析它。它已经是一个 JavaScript 对象。您需要做的是遍历这些值并为您的类别列表构建输出。

如果没有看到您的 JSON 结构,我无法提出更多建议。

于 2012-07-30T18:30:25.007 回答
1

这完全取决于您的数据的外观,但这可能会对您有所帮助,我认为:

var jsonCats = [
    {"id": "category1", "items": [{"iid":"item1"}, {"iid":"item2"}, {"iid":"item3"}]},
    {"id": "category2", "items": [{"iid":"item4"}, {"iid":"item5"}, {"iid":"item6"}]},
    {"id": "category3", "items": [{"iid":"item7"}, {"iid":"item8"}, {"iid":"item9"}]},
    {"id": "category4", "items": [{"iid":"item0"}]}
];

$.each(jsonCats, function(key, value) {
    var category = $("<li>" + this.id + "</li>");
    var items = this.items;

    $("#categories").append(category);

    category.click(function() {
        $("#items").empty();
        for (var j in items) {
            var item = $("<option>" + items[j].iid + "</option>");

            $("#items").append(item);
        }
    });
});

To see an example: http://jsfiddle.net/tive/U63EY/

EDIT: Now I read your question again ... it's actually better to use for loops since this is faster. The $.each() is a wrapper of the for loop anyway. (Hence the example :D)

http://jsperf.com/jquery-each-vs-for-loop/6

于 2012-07-30T20:02:34.957 回答