JQuery $.each() Итерация объекта массива JSON

У меня возникли реальные трудности при попытке решить итерацию JQuery $.each()

Это мой массив, ограничивающий результаты для удобства

[{"GROUP_ID":"143",
  "GROUP_TYPE":"2011 Season",
  "EVENTS":[
    {"EVENT_ID":"374","SHORT_DESC":"Wake Forest"},
    {"EVENT_ID":"376","SHORT_DESC":"Yale"},
    {"EVENT_ID":"377","SHORT_DESC":"Michigan State"}]
 },
 {"GROUP_ID":"142",
  "GROUP_TYPE":"2010 Season",
  "EVENTS":[
    {"EVENT_ID":"370","SHORT_DESC":"Duke"},
    {"EVENT_ID":"371","SHORT_DESC":"Northwestern"},
    {"EVENT_ID":"372","SHORT_DESC":"Brown"}]
}]

Моя первая итерация $.each работает очень хорошо, но у меня возникают проблемы с подитерацией для «СОБЫТИЙ».

Моя первая функция $.each()

     $.each(json, function(key) {

            html = '<a href="'+json[key].GROUP_ID+'">';

     ....

Моя неработающая вторая функция $.each()

     $.each(json.EVENTS, function(key) {
    newHTML += '<p>'+json.EVENTS[key].SHORT_DESC+'</p>';


     ...

Я понимаю (приблизительно), что это не отдельный объект JSON, а массив объектов JSON, но не понимаю, работает ли первая версия, почему вторая не работает

конечный результат, которого я хочу достичь, когда я понимаю, что это $.each() внутри $.each(), я знаю, что приведенный ниже код не работает и, скорее всего, идиотский, но дает представление о том, что я пытаюсь сделать Achieve : итерация по родителю, затем дочерний по родителю

$.each(json, function(key) {

            html = '<a href="'+json[key].GROUP_ID+'">';

     $.each(json[key].EVENTS, function(subkey) {

            html = '<a href="'+json[key]EVENTS[subkey].SHORT_DESC+'">';
 ...

person Jay Rizzi    schedule 09.06.2011    source источник


Ответы (1)


Назначьте также вторую переменную для $.each function(), это значительно упростит задачу, так как она предоставит вам данные (поэтому вам не придется работать с индексами).

$.each(json, function(arrayID,group) {
            console.log('<a href="'+group.GROUP_ID+'">');
    $.each(group.EVENTS, function(eventID,eventData) {
            console.log('<p>'+eventData.SHORT_DESC+'</p>');
     });
});

Следует распечатать все, что вы пытались в своем вопросе.

http://jsfiddle.net/niklasvh/hZsQS/

edit переименовал переменные, чтобы было легче понять, что к чему.

person Niklas    schedule 09.06.2011
comment
Это красивая вещь, работает как шарм. Я очень ценю ваш ответ, точный и простой в реализации, еще раз спасибо - person Jay Rizzi; 10.06.2011