我创建了一个柱状文件夹导航器,它在大多数情况下都可以使用。但是,如果用户选择向后(或向左)移动并选择较早的文件夹,我需要删除之前导航过的所有级别。
我可以在第一级导航中执行此操作,但对于我的生活,我无法获取除此之外的任何级别的代码。
$(document).ready(function(){
var folders = new Object();
var hierarchy = new Array();
var levels = new Object();
var id;
var index;
var container = 325;
levels.index = 1;
folders.chosen = (folders.chosen == null) ? 0 : folders.chosen;
$(".folders-hierarchy").delegate('li a', 'click', function(event) {
event.preventDefault();
id = $(this).attr("data-folder");
levels.chosen = $(this).closest('ul').attr("data-levels");
folders.chosen = id;
index = hierarchy.indexOf(levels.chosen);
if (index == -1) {
hierarchy.push(levels.chosen);
}
if (levels.chosen < levels.index) {
hierarchy.splice(index, hierarchy.length);
for (var i=levels.chosen;i<levels.index;i++) {
$('[data-levels="' + i + '"]').parent().remove();
}
levels.index = 1;
} else {
levels.index++;
}
$(".container-folders").css('width', (container = (container+325)) + 'px');
$("div.container-folders").scrollLeft(325);
get_folders_hierarchy(folders);
})
function get_folders_hierarchy (folders) {
$.ajax({
url: base_url + "folders/jq_get_folders_hierarchy/" + folders.chosen,
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
success: function (element) {
$("div.container-folders").append('<div class="container-folder"><ul id="folders-hierarchy-' + folders.chosen + '" data-levels="' + levels.index + '">');
if (element!=null) {
for (var i=0;i<element.length;i++) {
$("#folders-hierarchy-" + folders.chosen).append('<li><input type="radio" value="' + element[i].child + '" name="folders[]" /><a href="#link" data-folder="' + element[i].child + '">' + element[i].name + '</a></li>');
if (i==(element.length)-1) {
folders.chosen = element[i].parent;
}
}
} else {
$("#folders-hierarchy-" + folders.chosen).append('<li><input type="radio" value="' + folders.chosen + '" name="folders[]" />Choose this Folder</li>');
}
$("div.container-folders").append('</ul></div>');
}
});
}
get_folders_hierarchy(folders);
});
奇怪之处似乎发生在for()循环中,我试图让迭代器从选定的级别开始,但它反而完全相反。
我知道所有各种变量都返回了预期的值。但是,在尝试了我能想到的每一种排列之后,没有任何作用。
虽然它可能不完全有用,但我创建了an example of the entire code。但由于代码依赖于动态加载的JSON数据,因此如果不进行大量修改就无法工作。