1

を使用して JavaScript オブジェクト ( と呼びます'jItems') を生成しました$.getJSON。このページには、jItems の項目が当てはまるカテゴリのリストがあります。私の望みは、カテゴリをクリックして関数をトリガーし、そのカテゴリのアイテムのみを表示することです。getJsonまたはjqueryを使用するか、each()または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);
        }
    });
});

例を見るには: http://jsfiddle.net/tive/U63EY/

編集: 今、私はあなたの質問をもう一度読みました...これはより高速であるため、実際には for ループを使用することをお勧めします。とにかく、 $.each() は for ループのラッパーです。(したがって、例:D)

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

于 2012-07-30T20:02:34.957 に答える