JQuery $ .each () Итерация объекта массива JSON - PullRequest
18 голосов
/ 10 июня 2011

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

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

[{"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 (), я знаю, что приведенный ниже код не работает и, скорее всего, идиотский, но дает представление о том, что япытаясь достичь: перебрать родителя, потом потомка родителем

$.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+'">';
 ...

1 Ответ

39 голосов
/ 10 июня 2011

Назначьте вторую переменную также для $.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 переименовал переменные, чтобы было немного легче понять, что к чему.

...