jquery 不会将我的列表元素添加到动态注入(inject)的 <ul> 列表中

标签 jquery json list live

我真不知道问题出在哪里。这是我的代码:

$(document).ready(function(){
$("#folderTree > li").live('click',function(){
    var id = $(this).attr("id");
    if($('#' + id).hasClass('folderClosed')){
        $.ajax({
            url: "libs/php/ajax/documents/treeHandler.php",
            type: "POST",
            cache: false,
            dataType: "json",
            data: "treeNode=" + id,
            success: function(data){
                $('#' + id).removeClass('folderClosed');
                $('#' + id).addClass('folderOpen');
                $('#' + id).after('<ul id="#' + id + '-list">');
                $.each(data, function(){
                    var folder = '<li id=' + this.ID + ' class="folderClosed">' + this.folderName + '</li>';
                    $("#" + id + "-list").append(folder);
                })
                $('#' + id).after('</ul>');
            }
        })
    }else{
        $('#' + id).next("ul").remove();
        $('#' + id).removeClass('folderOpen');
        $('#' + id).addClass('folderClosed');
    }
})
})  

我正在构建一个基于 mysql 数据结构的文件夹树,它通过 ajax 作为 json 代码加载。到目前为止一切正常!

我唯一的问题是我的脚本无法将 var 文件夹添加到新注入(inject)的元素中。

Firebug 示例代码:

<ul id="folderTree">
    <li class="folderOpen" id="1">100_Projektmanagement</li>
    <ul id="#1-list"></ul>
    <li class="folderClosed" id="3">200_Projektinitialisierung</li>
    <li class="folderClosed" id="4">300_Voranalyse_Studien</li>
    <li class="folderClosed" id="5">400_Konzepte</li>
</ul>

感谢帮助。

最佳答案

您在此处错误地添加了具有 ID 的元素(仅在创建选择器时才将哈希添加到属性中):

$('#' + id).after('<ul id="#' + id + '-list">');
//should be:
$('#' + id).after('<ul id="' + id + '-list">');

总体上更有效的做法是这样做:

success: function(data){
  var parent = $('#' + id).removeClass('folderClosed').addClass('folderOpen');
  var list = $('<ul />', { id: id + '-list' });
  $.each(data, function(){
    $('<li />', { id: this.id, "class": "folderClosed", text: this.folderName })
      .appendTo(list);
  })
  list.insertAfter(parent);
}

关于jquery 不会将我的列表元素添加到动态注入(inject)的 <ul> 列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4054045/

相关文章:

jquery - 为什么这个输入框不触发 IE 上的焦点事件?

javascript - Grails - 如何在 HTML 页面的 Meta 标记内呈现部分未转义的 JSON

javascript - 从 JSON 编码的字符串中删除引号

java - 如何使用 Jackson 从 JSON 文件加载多个 HashMap

c# - 存储通用对象的列表/字典

string - Bash 从列表中选择随机字符串

javascript - 如何通过ajax和jquery在数据表中使用for循环为每一行添加按钮

javascript - JQuery 淡入/淡出导致其他 DIV 闪烁

python - 在没有排序功能的情况下在python中对列表进行排序

javascript - 从 Javascript 触发回发