отсоединить первый элемент json и добавить к другому div? - PullRequest
1 голос
/ 08 декабря 2011

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.

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

В заголовке вашего вопроса сказано, что вы хотите отсоединить первый элемент.Для этого вы можете использовать сплайс:

   $.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 
       });
   });

Или, если вы не хотите его удалять, вы можете просто использовать его, а затем зациклить оставшиеся элементы со старомодным циклом non-jQuery for:

   $.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];
       });
   });
0 голосов
/ 08 декабря 2011

Вы можете получить индекс текущего значения непосредственно из функции $.each.

$.each(object.storeList.state, function(index, value) {
  var div;
  if(index == 0) {
    div = $('#firstItemDiv');
  } else {
    div = $('#otherItemsDiv');
  }
  div.append(...);
});
...