【问题标题】:How can I reorder a list based on another active sortable list?如何根据另一个活动的可排序列表重新排序列表?
【发布时间】:2021-05-21 03:50:24
【问题描述】:

我有 list-1list-2 ul 项目。

如果我对 list-1 项 进行排序/重新排序,则同样应该反映在 list-2 项

Fiddle

$( function() {
    $( "#sortable" ).sortable({
        revert: true
    });
    $( "ul, li" ).disableSelection();
} );
body{font-family:verdana;font-size:14px;}
ul{margin:5px 0 20px 0;padding:0;list-style:none;}
li{padding:2px;width:150px;margin-bottom:5px;}
ul.list-1 li{background-color:#76c2ff;color:#ffffff;border:1px solid #008dff;}
ul.list-2 li{background-color:#fefefe;border:1px solid #ccc;text-align:right;}
h4{margin:0;padding:0;}
.sort-container{width:200px;float:left;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div class="sort-container">
    <h4>Sort / Reorder this list</h4>
    <ul id="sortable" class="list-1">
        <li>Sort 01</li>
        <li>Sort 02</li>
        <li>Sort 03</li>
        <li>Sort 04</li>
        <li>Sort 05</li>
    </ul>
</div>

<div class="sort-container">
    <h4>Should re-order</h4>
    <ul class="list-2">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
    </ul>
</div>

【问题讨论】:

    标签: jquery jquery-ui jquery-ui-sortable


    【解决方案1】:

    您可以使用.clone() 方法克隆您的第二个ul 元素,然后循环遍历第一个ul li 标签获取data-id 并使用它们以相同的顺序将其附加到第二个ul 中。

    演示代码

    $(function() {
      $("#sortable").sortable({
        revert: true,
        stop: function(event, ui) {
          //cloned ul
          var cloned = $('ul.list-2').clone()
          $('ul.list-2').html("") //empty it
          $('.list-1 li').each(function() {
            var data_id = $(this).data('id') //get data-id
            //find item inside li tag and change position
            $(cloned).find("li[data-two=" + data_id + "]").clone().appendTo($('ul.list-2'))
          });
        }
      });
      $("ul, li").disableSelection();
    });
    body {
      font-family: verdana;
      font-size: 14px;
    }
    
    ul {
      margin: 5px 0 20px 0;
      padding: 0;
      list-style: none;
    }
    
    li {
      padding: 2px;
      width: 150px;
      margin-bottom: 5px;
    }
    
    ul.list-1 li {
      background-color: #76c2ff;
      color: #ffffff;
      border: 1px solid #008dff;
    }
    
    ul.list-2 li {
      background-color: #fefefe;
      border: 1px solid #ccc;
      text-align: right;
    }
    
    h4 {
      margin: 0;
      padding: 0;
    }
    
    .sort-container {
      width: 200px;
      float: left;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    
    <div class="sort-container">
      <h4>Sort / Reorder this list</h4>
      <ul id="sortable" class="list-1">
      <!--aded data-attr just to know sequence-->
        <li data-id="1">Sort 01</li>
        <li data-id="2">Sort 02</li>
        <li data-id="3">Sort 03</li>
        <li data-id="4">Sort 04</li>
        <li data-id="5">Sort 05</li>
      </ul>
    </div>
    
    <div class="sort-container">
      <h4>Should re-order</h4>
      <ul class="list-2">
        <li data-two="1">1</li>
        <li data-two="2">2</li>
        <li data-two="3">3</li>
        <li data-two="4">4</li>
        <li data-two="5">5</li>
      </ul>
    </div>

    【讨论】:

    • @Swati优秀,这正是我所期待的……你拯救了我的一天……我接受 和 Upvoting 你的答案。感谢您的提示
    • 欢迎您 :) 很高兴我提供帮助
    猜你喜欢
    • 2019-07-09
    • 2015-02-27
    • 2022-11-17
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2022-12-22
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多