1

json:

{
   "storeList":{
      "state":[
         {
            "stateName":"Maine",
            "store":[
               {
                  "storeName":"Store 1",
                  "storeID":"store1",
                  "storeURL":"http:\/\/www.sitename.com"
               },
               {
                  "storeName":"Store 2",
                  "storeID":"store2",
                  "storeURL":"http:\/\/www.sitename.com"
               },
               {
                  "storeName":"Store 3",
                  "storeID":"store3",
                  "storeURL":"http:\/\/www.sitename.com"
               }
            ]
         },
         {
            "stateName":"Connecticut",
            "store":[
               {
                  "storeName":"Store 1",
                  "storeID":"store1",
                  "storeURL":"http:\/\/www.sitename.com"
               }
            ]
         }
      ]
   }
}

とページにレンダリングする私の関数:

$(document).ready(function() {
                    var object;
                    $.getJSON('xml/storeList.json', function(json) {
                        object = json;
                        $('#storeList').append('<ul/>')
                        $.each(object.storeList.state, function() {
                        var list = $('#storeList ul'),
                            listItem = $('<li/>'),
                            html = listItem.append($('<h3/>').text(this.stateName));

                        $.each(this.store, function() {
                            listItem.append($('<a />').attr('href', this.storeURL).text(this.storeName));
                        });

                        list.append(html)
                        });
                    });

                    });

最初の「状態」オブジェクトを取得して、他のオブジェクトとは異なるdivに追加したいと思います。ありがとう!jsonは配列であることに気付きましたが、json内でのポジショニングがどのように機能するかわかりません。

4

2 に答える 2

1

質問のタイトルは、最初の要素を切り離したいと言っています。そのためには、スプライスを使用できます。

   $.getJSON('xml/storeList.json', function(json) {
       object = json;

       var firstState = object.storeList.state.splice(0, 1)[0];
       //first state has been removed from the array and can be added anywhere

       $.each(object.storeList.state, function() {
          //each will now iterate over the remaining elements 
       });
   });

または、削除したくない場合は、それを使用して、残りのアイテムを昔ながらの非jQueryforループでループすることができます。

   $.getJSON('xml/storeList.json', function(json) {
       object = json;
       var currentState;

       var firstState = object.storeList.state[0];

       for(var i = 1; i < object.storeList.state.length; i++) {
          currentState = object.storeList.state[i];
       });
   });
于 2011-12-08T18:36:07.720 に答える
0

関数から直接現在の値のインデックスを取得できます$.each

$.each(object.storeList.state, function(index, value) {
  var div;
  if(index == 0) {
    div = $('#firstItemDiv');
  } else {
    div = $('#otherItemsDiv');
  }
  div.append(...);
});
于 2011-12-08T18:19:33.523 に答える