使用JQuery UI可排序连接列表示例存在y-scrollable列的问题

Kar*_*hik 8 javascript jquery html5 jquery-ui css3

我想做的是:我正在尝试创建一个Drag-Drop-Sort网格.遵循与JQuery UI可排序连接列表相同的示例.

http://jqueryui.com/sortable/#connect-lists

我的代码示例:上面示例的我的版本如下JSFiddle,

https://jsfiddle.net/t60x6j2b/5/

JS代码

$(function() {
    $( "#sortable1, #sortable2" ).sortable({
        connectWith: ".connectedSortable",
        placeholder: "ui-state-highlight"
    }).disableSelection();
});
Run Code Online (Sandbox Code Playgroud)

CSS

#sortable1, #sortable2 {
            border: 1px solid #eee;
            width: 147px;
            min-height: 20px;
            margin: 0;
            padding: 5px 0 0 0;
            float: left;
            margin-right: 10px;
            height:500px;
            overflow-y: auto;
            overflow-x: hidden;
        }
        #sortable1 div, #sortable2 div {
            margin: 0 5px 5px 5px;
            padding: 5px;
            font-size: 1.2em;
            width: 120px;
            height: 50px !important;
        }
Run Code Online (Sandbox Code Playgroud)

HTML

<div class="title">Column 1</div>
<div id="sortable1" class="connectedSortable">
    <div class="ui-state-default">Item 1</div>
    <div class="ui-state-default">Item 2</div>
    <div class="ui-state-default">Item 3</div>
    <div class="ui-state-default">Item 4</div>
    <div class="ui-state-default">Item 5</div>
    <div class="ui-state-default">Item 6</div>
    <div class="ui-state-default">Item 7</div>
    <div class="ui-state-default">Item 8</div>
    <div class="ui-state-default">Item 9</div>
    <div class="ui-state-default">Item 10</div>
</div>
<div class="title">Column 2</div>
<div id="sortable2" class="connectedSortable">
    <div class="ui-state-highlight">Item A</div>
    <div class="ui-state-highlight">Item B</div>
    <div class="ui-state-highlight">Item C</div>
    <div class="ui-state-highlight">Item D</div>
    <div class="ui-state-highlight">Item E</div>
    <div class="ui-state-highlight">Item F</div>
    <div class="ui-state-highlight">Item G</div>
    <div class="ui-state-highlight">Item H</div>
    <div class="ui-state-highlight">Item I</div>
    <div class="ui-state-highlight">Item J</div>
    <div class="ui-state-highlight">Item K</div>
    <div class="ui-state-highlight">Item L</div>
    <div class="ui-state-highlight">Item M</div>
    <div class="ui-state-highlight">Item N</div>
    <div class="ui-state-highlight">Item O</div>
    <div class="ui-state-highlight">Item P</div>
    <div class="ui-state-highlight">Item Q</div>
    <div class="ui-state-highlight">Item R</div>
    <div class="ui-state-highlight">Item S</div>
    <div class="ui-state-highlight">Item T</div>
    <div class="ui-state-highlight">Item U</div>
    <div class="ui-state-highlight">Item V</div>
    <div class="ui-state-highlight">Item W</div>
    <div class="ui-state-highlight">Item X</div>
    <div class="ui-state-highlight">Item Y</div>
    <div class="ui-state-highlight">Item Z</div>
</div>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我的代码和jquery ui例子之间没有太大区别.

我的问题:现在,我的问题是当我从第1列拖动说出第1项并尝试在第2列的项目M和项目N之间(显然隐藏在滚动条下),我需要第2列滚动条来激活并开始滚动.而是它滚动列1.

任何帮助将非常感激.

非常感谢,

KARTHIK

Jul*_*ire 7

您可以定位scrollParent可滚动实例的属性并在over事件上更改它.这是在jquery-ui中用于计算滚动的内容.它可能应该是默认行为,但由于某种原因它看起来不像.

看这个例子:

$(function () {
    $("#sortable1, #sortable2").sortable({
        connectWith: ".connectedSortable",
        placeholder: "ui-state-highlight",
        over: function (e, ui) {
            $(ui.sender).sortable('instance').scrollParent = $(e.target)
        }
    }).disableSelection();
});
Run Code Online (Sandbox Code Playgroud)
.title {
    float:left;
}
#sortable1, #sortable2 {
    border: 1px solid #eee;
    width: 147px;
    min-height: 20px;
    margin: 0;
    padding: 5px 0 0 0;
    float: left;
    margin-right: 10px;
    height:500px;
    overflow-y: auto;
    overflow-x: hidden;
}
#sortable1 div, #sortable2 div {
    margin: 0 5px 5px 5px;
    padding: 5px;
    font-size: 1.2em;
    width: 120px;
    height: 50px !important;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link type="text/css" rel="stylesheet" href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" />
<div class="title">Column 1</div>
<div id="sortable1" class="connectedSortable">
    <div class="ui-state-default">Item 1</div>
    <div class="ui-state-default">Item 2</div>
    <div class="ui-state-default">Item 3</div>
    <div class="ui-state-default">Item 4</div>
    <div class="ui-state-default">Item 5</div>
    <div class="ui-state-default">Item 6</div>
    <div class="ui-state-default">Item 7</div>
    <div class="ui-state-default">Item 8</div>
    <div class="ui-state-default">Item 9</div>
    <div class="ui-state-default">Item 10</div>
</div>
<div class="title">Column 2</div>
<div id="sortable2" class="connectedSortable">
    <div class="ui-state-highlight">Item A</div>
    <div class="ui-state-highlight">Item B</div>
    <div class="ui-state-highlight">Item C</div>
    <div class="ui-state-highlight">Item D</div>
    <div class="ui-state-highlight">Item E</div>
    <div class="ui-state-highlight">Item F</div>
    <div class="ui-state-highlight">Item G</div>
    <div class="ui-state-highlight">Item H</div>
    <div class="ui-state-highlight">Item I</div>
    <div class="ui-state-highlight">Item J</div>
    <div class="ui-state-highlight">Item K</div>
    <div class="ui-state-highlight">Item L</div>
    <div class="ui-state-highlight">Item M</div>
    <div class="ui-state-highlight">Item N</div>
    <div class="ui-state-highlight">Item O</div>
    <div class="ui-state-highlight">Item P</div>
    <div class="ui-state-highlight">Item Q</div>
    <div class="ui-state-highlight">Item R</div>
    <div class="ui-state-highlight">Item S</div>
    <div class="ui-state-highlight">Item T</div>
    <div class="ui-state-highlight">Item U</div>
    <div class="ui-state-highlight">Item V</div>
    <div class="ui-state-highlight">Item W</div>
    <div class="ui-state-highlight">Item X</div>
    <div class="ui-state-highlight">Item Y</div>
    <div class="ui-state-highlight">Item Z</div>
</div>
Run Code Online (Sandbox Code Playgroud)