如何在jQuery中使用for()循环递归删除除法?

时间:2013-06-17 11:56:07

标签: jquery

我创建了一个柱状文件夹导航器,它在大多数情况下都可以使用。但是,如果用户选择向后(或向左)移动并选择较早的文件夹,我需要删除之前导航过的所有级别。

我可以在第一级导航中执行此操作,但对于我的生活,我无法获取除此之外的任何级别的代码。

$(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数据,因此如果不进行大量修改就无法工作。

0 个答案:

没有答案