在jquery-ui可排序的两个列表之间交换列表项

时间:2017-05-22 06:09:00

标签: jquery html css jquery-ui-sortable

我有两个列表,包含6个项目,connected与一个类.connectedSortable当我在两个列表之间移动一个项目时,该项目应该与那里的位置交换(例如:如果我移动项目-1并放下项目 - 7然后item-1必须移动到item-7的位置,反之亦然)我如何用他们的id交换这两个元素。 这是两个ul列表:

<ul class="connectedSortable">
    <li class="ui-state-default" id="item-1">Item 1</li>
    <li class="ui-state-default" id="item-2>Item 2</li>
    <li class="ui-state-default" id="item-3>Item 3</li>
    <li class="ui-state-default" id="item-4>Item 4</li>
    <li class="ui-state-default" id="item-5>Item 5</li>
    <li class="ui-state-default" id="item-6>Item 6</li>
</ul>
<ul class="connectedSortable">
    <li class="ui-state-highlight" id="item-7>Item 7</li>
    <li class="ui-state-highlight" id="item-8>Item 8</li>
    <li class="ui-state-highlight" id="item-9>Item 9</li>
    <li class="ui-state-highlight" id="item-10>Item 10</li>
    <li class="ui-state-highlight" id="item-11>Item 11</li>
    <li class="ui-state-default" id="item-12>Item 12</li>
</ul>


$( ".connectedSortable" ).sortable({
    connectWith: ".connectedSortable"
}).disableSelection();

2 个答案:

答案 0 :(得分:1)

试试这个,

&#13;
&#13;
$(function() {
    $( ".connectedSortable" ).sortable({
        connectWith: ".connectedSortable",
        receive: function (event, ui) {
             var returnItem = $("li",this).first();
             $(".connectedSortable").not(this).append(returnItem);
        }
    }).disableSelection();
});
&#13;
.connectedSortable { 
list-style-type: none; 
margin: 0;
padding: 0 0 2.5em; 
float: left; 
margin-right: 10px; 
}
.connectedSortable li {
    font-size: 1.2em;
    margin: 0 5px 5px;
    padding: 5px;
    width: 150px;
}
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
    background: #E6E6E6;
    border: 1px solid #D3D3D3;
    color: #555555;
    font-weight: normal;
}
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {
    background: #FBF9EE;
    border: 1px solid #FCEFA1;
    color: #363636;
}
&#13;
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<ul class="connectedSortable">
    <li class="ui-state-default">Item 1</li>
    <li class="ui-state-default">Item 2</li>
    <li class="ui-state-default">Item 3</li>
    <li class="ui-state-default">Item 4</li>
    <li class="ui-state-default">Item 5</li>
</ul>
 
<ul class="connectedSortable">
    <li class="ui-state-highlight">Item 1</li>
    <li class="ui-state-highlight">Item 2</li>
    <li class="ui-state-highlight">Item 3</li>
    <li class="ui-state-highlight">Item 4</li>
    <li class="ui-state-highlight">Item 5</li>
</ul>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

从这里得到简单的snipet:JQueryUI。这将允许您从列表中选择项目并将其放入另一个列表中。停止事件为您提供新项目的确切位置。

&#13;
&#13;
$( function() {
        $( "#sortable1, #sortable2" ).sortable({
          connectWith: ".connectedSortable",
          stop: function(event, ui) {
            alert("Placed After: " + ui.item.index());
          }
        }).disableSelection();
      } );
&#13;
#sortable1, #sortable2 {
        border: 1px solid #000;
        width: 142px;
        min-height: 20px;
        list-style-type: none;
        margin: 0;
        padding: 5px 0 0 0;
        float: left;
        margin-right: 10px;
      }
      #sortable1 li, #sortable2 li {
        margin: 0 5px 5px 5px;
        padding: 5px;
        font-size: 1.2em;
        width: 120px;
&#13;
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
      <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
      <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
      
      
      <ul id="sortable1" class="connectedSortable">
      <li class="ui-state-default">Item 1</li>
      <li class="ui-state-default">Item 2</li>
      <li class="ui-state-default">Item 3</li>
      <li class="ui-state-default">Item 4</li>
      <li class="ui-state-default">Item 5</li>
    </ul>
     
    <ul id="sortable2" class="connectedSortable">
      <li class="ui-state-highlight">Item 1</li>
      <li class="ui-state-highlight">Item 2</li>
      <li class="ui-state-highlight">Item 3</li>
      <li class="ui-state-highlight">Item 4</li>
      <li class="ui-state-highlight">Item 5</li>
    </ul>
&#13;
&#13;
&#13;

对于提前,您可以找到另一个堆栈答案Here。希望这会对你有所帮助。

问候!