1

我正在尝试制作一个排序界面,其中有两种不同类型的组。每种类型可以有无限数量的组,每个组可以有无限数量的项目。无论哪种类型,您都应该能够在所有组之间移动项目。

我已经设置了界面,以便组显示为完全用 CSS 制作的树形菜单,如下所示:http ://www.thecssninja.com/css/css-tree-menu

当我将一个项目拖到其容器外时,它会消失在另一个容器后面。我尝试在 jQuery 中使用 helper: "clone" 选项,并尝试在项目上设置更高的 z-index,但它不起作用。

此外,每当我抓住并放下一个项目时,即使它位于其原始位置,然后折叠该组,丢弃的项目也会出现在组名称的顶部。我猜它不再被正确地识别为该组的孩子或类似的东西。
如果您将项目放在折叠的组中,也会发生同样的情况。

有没有人可以解决这些问题?

http://jsfiddle.net/Kantana/ya63V/8/
长长的代码列表如下。

Javascript(仅适用于单个组类型):

$(document).ready(function () {
    $('.sortable').sortable({
        connectWith: $('.sortable'),
        helper: "clone"
    }).disableSelection();
});

HTML:

<div class="groupbox" id="groupbox_reports">
    <div class="groupbox_heading">Groups</div>
    <div class="groupbox_wrapper">
        <ol class="tree">
            <li class="group">
                <label for="group1">Group 1: 2013-03-09</label>
                <input type="checkbox" id="group1" />
                <ol class="sortable">
                    <li class="file" id="item_1"><a href="">Report 1</a>
                    </li>
                    <li class="file" id="item_3"><a href="">Report 3</a>
                    </li>
                    <li class="file" id="item_6"><a href="">Report 6</a>
                    </li>
                </ol>
            </li>
            <li class="group">
                <label for="group2">Group 2: 2013-03-10</label>
                <input type="checkbox" id="group2" />
                <ol class="sortable">
                    <li class="file" id="item_2"><a href="">Report 2</a>
                    </li>
                    <li class="file" id="item_5"><a href="">Report 5</a>
                    </li>
                    <li class="file" id="item_7"><a href="">Report 7</a>
                    </li>
                </ol>
            </li>
            <li class="group">
                <label for="group3">Group 3: 2013-03-11</label>
                <input type="checkbox" id="group3" />
                <ol class="sortable">
                    <li class="file" id="item_8"><a href="">Report 8</a>
                    </li>
                    <li class="file" id="item_9"><a href="">Report 9</a>
                    </li>
                    <li class="file" id="item_10"><a href="">Report 10</a>
                    </li>
                </ol>
            </li>
        </ol>
    </div>
    <div class="groupbox_menu">&nbsp;</div>
</div>
<div class="groupbox" id="groupbox_incidents">
    <div class="groupbox_heading">Incidents</div>
    <div class="groupbox_wrapper">
        <ol class="tree">
            <li class="group">
                <label for="incident1">Incident 1: 2013-03-12</label>
                <input type="checkbox" id="incident1" />
                <ol class="sortable">
                    <li class="file" id="item_11"><a href="">Report 11</a>
                    </li>
                    <li class="file" id="item_12"><a href="">Report 12</a>
                    </li>
                    <li class="file" id="item_13"><a href="">Report 13</a>
                    </li>
                </ol>
            </li>
            <li class="group">
                <label for="incident2">Incident 2: 2013-03-13</label>
                <input type="checkbox" id="incident2" />
                <ol class="sortable">
                    <li class="file" id="item_14"><a href="">Report 14</a>
                    </li>
                    <li class="file" id="item_15"><a href="">Report 15</a>
                    </li>
                    <li class="file" id="item_16"><a href="">Report 16</a>
                    </li>
                </ol>
            </li>
            <li class="group">
                <label for="incident3">Incident 3: 2013-03-14</label>
                <input type="checkbox" id="incident3" />
                <ol class="sortable">
                    <li class="file" id="item_17"><a href="">Report 17</a>
                    </li>
                    <li class="file" id="item_18"><a href="">Report 18</a>
                    </li>
                    <li class="file" id="item_19"><a href="">Report 19</a>
                    </li>
                </ol>
            </li>
        </ol>
    </div>
    <div class="groupbox_menu">&nbsp;</div>
</div>

CSS:

/* CSS Tree menu styles */
 ol.tree {
    padding: 0;
    width: 100%;
    margin-top: 4px;
}
li {
    position: relative;
    list-style: none;
    margin-bottom: 2px;
    padding: 3px;
}
li.group {
    border: 1px dashed;
}
li.file {
    margin-left: -1px !important;
}
li.file a {
    background: url(../img/document.png) 0 0 no-repeat;
    color: #000000;
    padding-left: 21px;
    text-decoration: none;
    display: block;
}
li input {
    position: absolute;
    left: 0;
    margin-left: 0;
    opacity: 0;
    z-index: 2;
    cursor: pointer;
    height: 1em;
    width: 1em;
    top: 0;
}
li input + ol {
    background: url(../img/toggle-small-expand.png) 40px 0 no-repeat;
    margin: -18px 0 0 -23px;
    /* 15px */
    height: 1em;
}
li input + ol > li {
    display: none;
    margin-left: -14px !important;
    padding-left: 1px;
}
li label {
    cursor: pointer;
    padding-left: 37px;
}
li input:checked + ol {
    background: url(../img/toggle-small.png) 40px 5px no-repeat;
    margin: -23px 0 0 -23px;
    /* 20px */
    padding: 1.563em 0 0 80px;
    height: auto;
}
li input:checked + ol > li {
    display: block;
    margin: 0 0 0.125em;
    /* 2px */
}
li input:checked + ol > li:last-child {
    margin: 0 0 0.063em;
    /* 1px */
}
/** group box **/
 #groupbox {
    margin: 50px auto 0;
}
.groupbox {
    position: relative;
    display: inline;
    float: left;
    height: 500px;
    overflow-y: auto;
}
.groupbox_wrapper {
    padding: 10px;
    overflow: hidden;
}
.groupbox_heading {
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    -ms-box-sizing: border-box;
    position: relative;
    top: 0;
    width: 100%;
    border-bottom: 2px solid #939393;
    padding: 10px;
    font-weight: bold;
}
#groupbox_reports {
    width: 25%;
    border-left: 2px solid #939393;
    border-top: 2px solid #939393;
    border-right: 2px solid #939393;
}
#groupbox_incidents {
    width: 25%;
    border-top: 2px solid #939393;
    border-right: 2px solid #939393;
}
#groupbox_details {
    width: 49%;
    border-top: 2px solid #939393;
    border-right: 2px solid #939393;
}
.groupbox_menu {
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 30px;
    background-color: #939393;
}
4

0 回答 0