使用嵌套的json对象追加值

时间:2018-02-06 19:38:45

标签: jquery json for-loop append

我需要从包含州和城市地址的JSON对象创建一个列表。

JSON对象如下所示:

atm = {estados": [
    {
        "txNome": "TOCANTINS",
        "listaCidades": [
            {
                "txNome": "PALMAS",
                "listaEnderecos": [
                    "AVENIDA JUSCELINO KUBITSCHEK. <br> Número: 0. <br> Bairro: PLANO DIRETOR NORTE. <br> CEP: 77.001-080.",
                    "AV 107 NORTE AVEN JUSCELINO KUBITSCHEK. <br> Bairro: PLANO DIRETOR NORTE. <br> CEP: 77.001-080."
                ]
            }
        ]
    },
    {
        "txNome": "MARANHAO",
        "listaCidades": [
            {
                "txNome": "SANTA INES",
                "listaEnderecos": [
                    "AVENIDA CASTELO BRANCO. <br> Número: 2790. <br> Bairro: LARANJEIRAS. <br> CEP: 65.300-000.",
                    "ROD BR 316 KM 258. <br> Número: 32. <br> Bairro: CANAA. <br> CEP: 65.300-000.",
                    "AV CASTELO BRANCO. <br> Número: 2790. <br> Bairro: LARANJEIRAS. <br> CEP: 65.300-000."
                ]
            }

遵循这个JSFiddle我做了这个

var atms = <?php echo $scriptListaAtm ?>;

    ul = $('<div class="container">');


    for (var i = 0; i < atms.estados.length; i++) {

        var li = $('<h1>').text(atms.estados[i].txNome);

        var ul_cidade = $('<div class="col-md-4 botmargin">');

        for (var j = 0; j < atms.estados[i].listaCidades.length; j++) {

            var cidade = $('<h4>').text(atms.estados[i].listaCidades[j].txNome);
            var ul_endereco = $('<div>');

            for (var k = 0; k < atms.estados[i].listaCidades[j].listaEnderecos.length; k++) {
                $('<p>'+atms.estados[i].listaCidades[j].listaEnderecos[k]).appendTo(ul_endereco);
            }

            cidade.append(ul_endereco);
            ul_cidade.append(cidade);

        }

        li.after(ul_cidade);  
        li.appendTo(ul);

    }       
    ul.appendTo(locaisatendimento);

使用li.after(ul_cidade)不起作用,我只获取状态名称,但是如果我使用li.append(ul_cidade)它确实有效,但是我得到了错误的结构。

有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:0)

这是因为li是您创建的节点,而不是选择器,after根据其描述:

  

描述:在匹配元素集中的每个元素之后插入由参数指定的内容。

所以没有任何元素。而是li.append(ul_cidade)追加内容。