拖放时显示位置和合计

Display the position and total when dragging and dropping

本文关键字:位置 显示 拖放      更新时间:2023-09-26

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Sortable - Handle empty lists</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <style>
    #sortable1,
    #sortable2,
    #sortable3 {
      list-style-type: none;
      margin: 0;
      float: left;
      margin-right: 10px;
      background: #eee;
      padding: 5px;
      width: 143px;
    }
    #sortable1 li,
    #sortable2 li,
    #sortable3 li {
      margin: 5px;
      padding: 5px;
      font-size: 1.2em;
      width: 120px;
    }
  </style>
  <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>
  <script>
    $(function() {
      $("ul.droptrue").sortable({
        connectWith: "ul"
      });
      $("ul.dropfalse").sortable({
        connectWith: "ul",
        dropOnEmpty: false
      });
      $("#sortable1, #sortable2, #sortable3").disableSelection();
    });
  </script>
</head>
<body>
  <ul id="sortable1" class="droptrue">
    <li class="ui-state-default">Worker 1</li>
    <li class="ui-state-default">Worker 2</li>
    <li class="ui-state-default">Worker 3</li>
    <li class="ui-state-default">Worker 4</li>
    <li class="ui-state-default">Worker 5</li>
  </ul>
  <ul id="sortable2" class="droptrue">
    <li class="ui-state-default">Worker 6</li>
    <li class="ui-state-default">Worker 7</li>
    <li class="ui-state-default">Worker 8</li>
    <li class="ui-state-default">Worker 9</li>
    <li class="ui-state-default">Worker 10</li>
  </ul>
  <ul id="sortable3" class="droptrue">
    <li class="ui-state-default">Worker 11</li>
    <li class="ui-state-default">Worker 12</li>
    <li class="ui-state-default">Worker 13</li>
    <li class="ui-state-default">Worker 14</li>
    <li class="ui-state-default">Worker 15</li>
  </ul>
  <br style="clear:both">
</body>
</html>

正如我在上面提到的,在每列的末尾必须显示行数,并且在每行的旁边应该显示编号。

1 worker1     1 worker8           1 worker14
2 worker2     2 worker10          2 worker13
3 worker3     3 worker11          3 worker15
4 worker4     4 worker12           total 3
5 worker5     total 4
6 worker7
7 worker6
8 worker9
Total 8

要执行所需操作,可以将ul元素封装在div中,并在其下封装另一个div,以保持该容器中li元素的总数。然后,当使用可排序插件的stop属性删除项目时,您可以更新该total,如下所示:

$("ul.droptrue").sortable({
  connectWith: "ul",
  stop: function() {
    $('.total').text(function() {
      return 'Total: ' + $(this).closest('.container').find('li').length;
    });
  }
});
$("ul.dropfalse").sortable({
  connectWith: "ul",
  dropOnEmpty: false
});
$("#sortable1, #sortable2, #sortable3").disableSelection();
.container {
  display: inline-block;
}
#sortable1,
#sortable2,
#sortable3 {
  list-style-type: none;
  margin: 0;
  float: left;
  margin-right: 10px;
  background: #eee;
  padding: 5px;
  width: 143px;
}
#sortable1 li,
#sortable2 li,
#sortable3 li {
  margin: 5px;
  padding: 5px;
  font-size: 0.8em; /* changed so the example fits in the snippet better*/
  width: 120px;
}
<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>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<div class="container">
  <ul id="sortable1" class="droptrue">
    <li class="ui-state-default">Worker 1</li>
    <li class="ui-state-default">Worker 2</li>
    <li class="ui-state-default">Worker 3</li>
    <li class="ui-state-default">Worker 4</li>
    <li class="ui-state-default">Worker 5</li>
  </ul>
  <div class="total">Total: 5</div>
</div>
<div class="container">
  <ul id="sortable2" class="droptrue">
    <li class="ui-state-default">Worker 6</li>
    <li class="ui-state-default">Worker 7</li>
    <li class="ui-state-default">Worker 8</li>
    <li class="ui-state-default">Worker 9</li>
    <li class="ui-state-default">Worker 10</li>
  </ul>
  <div class="total">Total: 5</div>
</div>
<div class="container">
  <ul id="sortable3" class="droptrue">
    <li class="ui-state-default">Worker 11</li>
    <li class="ui-state-default">Worker 12</li>
    <li class="ui-state-default">Worker 13</li>
    <li class="ui-state-default">Worker 14</li>
    <li class="ui-state-default">Worker 15</li>
  </ul>
  <div class="total">Total: 5</div>
</div>