0

.animate() 関数 (太字でマーク) を使用して、一連の分割を右から左にスライドさせようとしていますが、これは機能しています。ただし、分割を保持する左の幅が右に配置されているように見えるため、左に後方にスクロールすることはできません。これは実質的に空のスペースです。

CSSは次のとおりです。

div.folders-hierarchy {
    border: 1px dotted #ccc;
    border-radius: 5px;
    height: 300px;
    margin: 10px 0;
    padding: 0 0 0 0;
    overflow: auto;
    width: 325px;
    -moz-border-radius: 5px;
}

div.folders-hierarchy .container-folders {
    right: 0px;
    position: relative;
    width: 0px;
}

div.folders-hierarchy .container-folders .container-folder {
    float: left;
    width: 325px;
}

div.folders-hierarchy ul {
    margin: 0 5px;
    width: 315px;
}

div.folders-hierarchy ul input[type="radio"] {
    margin: 0 2px;
}

div.folders-hierarchy ul li {
    border: 1px solid #ccc;
    border-radius: 5px;
    list-style-type: none;
    margin: 5px 0;
    padding: 5px 10px;
}

HTMLは次のとおりです。

<div class="folders-hierarchy">
    <div class="container-folders"></div>
</div>

そしてここにjQueryがあります:

$(document).ready(function(){
    var folders = new Object();
    var levels = new Object();
    var id;
    var container = 325;
    var slide = 0;
    levels.index = 0;
    folders.chosen = (folders.chosen == null) ? 0 : folders.chosen;
    $(".folders-hierarchy").delegate('li a', 'click', function(event) {
        event.preventDefault();
        id = parseInt($(this).attr("data-folder"));
        levels.chosen = parseInt($(this).closest('ul').attr("data-levels"));
        folders.chosen = id;
        if (levels.chosen < levels.index) {
            if (levels.index > 1) {
                x = (levels.index+1);
                for (var i=0;i<x;i++) {
                    if (i > levels.chosen) {
                        $('[data-levels="' + i + '"]').parent().remove();
                    }
                }
            } else {
                $('[data-levels="1"]').parent().remove();
            }
            levels.index = (levels.chosen+1);
        } else {
            levels.index++;
        }
        $(".container-folders").css('width', (container = (container+325)) + 'px');
        **$(".container-folders").animate( { right: slide = (levels.index < 1) ? 325 : (slide+325) }, 250);**
        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"><a name="level-' + levels.index + '"></a><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="#level-' + (levels.index+1) + '" 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);
});

フロートか何かだと思いますが、どれが、どこで、さらに重要なことに、なぜなのかわかりません。

また、コードは次のとおりです。ただし、データの組み立て方法が原因で、JSON データを提供することは現実的ではありません。

4

0 に答える 0