0

我正在创建一个嵌套的嵌套嵌套列表,但在分配我的buffer内部 UL 时遇到问题。我试过$('ul#lists').html(buffer)了,但没有打印出来...

JSON

{
"browse": [
    { 
        "name":"browse by state" , 
        "command":"state" }, 

    { 
        "name":"browse by equipment" , 
        "command":"equipment" }, 

    { 
        "name":"browse by brand" , 
        "command":"brand" }
]
}

HTML

<section id="browser">
        <ul id="lists"></ul>
</section>

jQuery

$(function(tree_click){
    $('ul#lists').on('click','.c',function(){
    var test = "";
    $(this).removeClass('c'); //To assign this event once

    $.get('scripts/list.json', function(result, status){    
        var buffer = "";
        $.each(result, function(i, val){            
            for(var i=0; i < val.length; i++){ 
            var item = val[i];
            buffer+="<li><a href='#' cmd='"+item.command+"'>"+item.name+"</a></li>";} 
        });
        $(e.target).parent().append(buffer);
    });
});
});

问题已经解决了。我用解决方案更新了我的问题。

但现在我的列表切换器不起作用。

我用这个作为切换器,

$(function(toggle_list){
$("#lists").on('click','a', function() {
    return !($(this).parents("li:first").find("ul:first").slideToggle('fast'))
});
});

有什么需要吗?

4

2 回答 2

1

改变:

$('ul#lists').on('click','.c',function(){ 

至:

$('ul#lists').on('click','.c',function(e){

在此函数内但在 $.get 调用之前指定 var 缓冲区。

要附加到单击的 UL,请在单击处理程序中执行以下操作:

$(e.target).append(buffer);
于 2013-10-29T04:45:33.097 回答
0

假设点击事件被调用并且ajax请求成功并且它正在返回一个数组,那么就会出现问题,var item = val[i];因为val它本身就是数组中的当前项。

$(function (tree_click) {
    $('#lists').on('click', '.c', function () {
        $(this).removeClass('c'); //To assign this event once

        $.get('scripts/list.json', function (result, status) {
            var buffer = $.map(result, function (item) {
                return "<li><a href='#' cmd='" + item.command + "'>" + item.name + "</a></li>";
            }).join('');
            $('#lists').html(buffer);
        });
    });
});
于 2013-10-29T04:04:37.130 回答