0

だから、私はこのコードを持っています:

function popAreaTree() {

        var tree = $("ol.tree");
        var list1 = tree.children('li');
        var list2 = list1.children('ol').children('li');


        $(tree).on('click', $(this).children('li').children('a'), function(e, i) {
            console.log($(this).text());
            $(this).parent('li').toggleClass('open', 300);
        });

        $.ajax({
            url: '../admin/callbacks/jsonDataList.php',
            data: {t: 'zoneandarea'},
            dataType:"json",
            async: false,
            global: false,
            success: function(j, status) {
                for(var i = 0;1 < j.length; i++) {

                    var li = tree.append('<li class="zone"><a href="#">'+j[i].name+'</a></li>');
                    var areas = '';
                    $.each(j[i].areas, function(i, item) {
                        areas += '<li class="area" data-area-uid="'+item.uid+'">'+item.name+'</li>';
                    });
                    $(areas).insertAfter(li.closest('a')); // This is the problem
                }
            }
        });
    }

基本的にファイルツリーを作成するだけです。ajax は、各結果内にもう 1 つの配列を持つ json 配列を出力する php ページに投稿します。こんなふうになります:

array('name'=>name, 'uid'=>uid, areas=>array('name'=>name, 'uid'=>uid))

liオブジェクト内のaタグでinsertAfter を実行する方法を知る必要があるだけです。

4

2 に答える 2

1

内部のアンカーを探して、次を使用できます.after()

li.children('a').after(areas);

ただし、この場合、次を使用することもできます.append()

li.append(areas); // this will go behind <a>
于 2013-05-06T14:31:24.317 に答える
1

html 文字列を作成し、それをtreeオブジェクトに追加するだけです。

var html = '<li class="zone"><a href="#">'+j[i].name+'</a>';
$.each(j[i].areas, function(i, item) {
    html += '<li class="area" data-area-uid="'+item.uid+'">'+item.name+'</li>';
});
html += '</li>'; //close first li element

tree.append(html);

余談ですが、あなたの問題は、セレクターに一致する最も近いclosestを探す の使用に起因する必要があります。要素の直接の子を検索するだけのものを使用したいと思うでしょう。children

于 2013-05-06T14:25:27.143 に答える