我真不知道问题出在哪里。这是我的代码:
$(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/