jQuery UI Sortable 连接列表 css 问题

dja*_*ngo 1 javascript css jquery jquery-ui jquery-ui-sortable

我正在使用可通过连接列表排序的 jquery ui。我有一个最重要的要求有两个问题。

  1. 拖动时项目落后于另一个列表 li.ui-splitselect-item
  2. 向右拖动项目(当鼠标太右时)创建水平滚动

重要提示: 列表ul.ui-splitselect-list应该有overflow-y:auto;所以列表的标题保持固定并且只有列表项被滚动 在此处输入图片说明

注意: 我之前在STACKOVERFLOW上问过这个问题,但没有注意到解决方案中缺少我的重要要求,所以我再次明确地提出了问题。

JSFIDDLE: http : //jsfiddle.net/bababalcksheep/z67Td/

HTML样机:

<div class="ui-splitselect ui-helper-clearfix ui-widget ui-widget-content" style="height:200px;" >
    <div class="ui-widget-content ui-splitselect-selected">
        <div class="ui-widget-header ui-helper-clearfix">
             List1
        </div>
        <ul id="sortable1"  class="ui-splitselect-list" style="height: 332px;">
            <li class="ui-splitselect-item ui-state-default">
                <a class='ui-splitselect-handle-drag'><span class='ui-icon ui-icon-carat-2-n-s'></span></a>
                <span class="ui-splitselect-handle-select">TEST-List1</span>
                <a class="ui-splitselect-handle-move" href="#"><span class="ui-icon ui-icon-plus"></span></a>
            </li>  
        </ul>
    </div>
    <div class="ui-widget-content ui-splitselect-available"  >
        <div class="ui-widget-header ui-helper-clearfix">
              List2
        </div>
        <ul id="sortable2"  class="ui-splitselect-list" style="height: 332px;">
        </ul>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.ui-splitselect{font-size:.8em;width:100%!important;text-align:center;margin:0 auto;padding:0}
.ui-splitselect ul{-moz-user-select:none}
.ui-splitselect .ui-widget-header{border:none;font-size:11px}
.ui-splitselect-selected{height:100%!important;float:left;border:none;width:50%;margin:0;padding:0}
.ui-splitselect-available{height:100%!important;width:49.4%;float:left;border-top:none;border-bottom:none;border-right:none;margin:0;padding:0}
.ui-splitselect-list{height:92%!important;position:relative;list-style:none;overflow:auto;margin:0;padding:0}
.ui-splitselect-item{cursor:default;line-height:20px;height:20px;font-size:11px;list-style:none;display:list-item;white-space:nowrap;overflow:hidden;margin:1px;padding:0}
.ui-splitselect-item.ui-sortable-helper{z-index:99999}
.ui-splitselect-handle-select{float:left}
.ui-splitselect-handle-drag{float:left;height:20px;border-top:0;border-bottom:0;cursor:pointer;margin:0 10px 0 5px;padding:2px 5px}
.ui-splitselect-handle-move{text-decoration:none;cursor:pointer;float:right;height:20px;border-top:0;border-bottom:0;margin:0 5px 0 10px;padding:2px 5px}
Run Code Online (Sandbox Code Playgroud)

JS:

 $("#sortable1, #sortable2").sortable({
     connectWith: ".ui-splitselect-list",
     containment: ".ui-splitselect",
     scroll: false,
     placeholder: "ui-state-highlight ui-splitselect-item"
 }).disableSelection();
Run Code Online (Sandbox Code Playgroud)

Kon*_*is' 6

尝试添加appendTo: document.bodyhelper: clone选项sortable,如下所示:

$("#sortable1, #sortable2").sortable({
  appendTo: document.body,
  helper: "clone",
  connectWith: ".ui-splitselect-list",
  containment: ".ui-splitselect",
  scroll: false,
  placeholder: "ui-state-highlight ui-splitselect-item"
}).disableSelection();
Run Code Online (Sandbox Code Playgroud)

Js小提琴:http : //jsfiddle.net/XpP25/2/

技巧在于创建克隆原始元素的排序助手,然后将其附加到 body 元素以解决zIndex问题。在可拖动和可排序的停止事件后自动删除所有助手,因此它不应该弄乱您的代码:)

希望能帮助到你。