jQuery $ .each () многомерный массив JSON - PullRequest
1 голос
/ 17 августа 2011

Что мне удалось сделать не так здесь? Я не вижу этого, через первый $ .each он работает, до второго останавливается ..

var testJSON = {"cluster":[{"node":[{"name":"one", "number":'100', "error":"none"},{"name":"two", "number":'200', "error":"none"},{"name":"three", "number":'300', "error":"found"},{"name":"four", "number":'400', "error":"none"}]}]}

if (testJSON.cluster.length != 0)
{
    $.each(testJSON.cluster, function(i, clstr)
    {
        $('.clusters').append('<ul class="nodes">');
        $.each(clstr.node, function(i, ndes)
        {
            $.find('ul').append('<li>'+ndes.name+'</li>');
        });
        $('.clusters').append('</ul>');
    });
}

Ответы [ 2 ]

7 голосов
/ 17 августа 2011

Измените свой код следующим образом:

if (testJSON.cluster.length != 0) {
    $.each(testJSON.cluster, function(i, clstr) {
        $('.clusters').append('<ul class="nodes"></ul>');
        $.each(clstr.node, function(i, ndes) {
            $('.clusters ul.nodes').append('<li>' + ndes.name + '</li>');
        });;
    });
}

Когда вы добавляете элемент, вам не нужно позже добавлять закрывающий тег.Кроме того, find не может быть вызван напрямую из объекта jQuery.Вам нужен селектор.

2 голосов
/ 17 августа 2011

Что такое $.find, вы получаете исключение во внутреннем цикле, а затем оно останавливается.

$.find('ul').append('<li>'+ndes.name+'</li>');

Вы ищете ul, который вы добавили во внешний цикл?Если да, то используйте

$('.clusters ul').append('<li>'+ndes.name+'</li>')
...