javascript - 拖放时显示位置和总数

标签 javascript jquery html css

<!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 以保存 的总数code>li 该容器中的元素。然后,您可以在使用 sortable 插件的 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>

关于javascript - 拖放时显示位置和总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40384177/

相关文章:

javascript - 对象未传递给 jQuery 对话框 OnSubmit 处理程序

jquery - 选择器输入 [name^= 不适用于更改选择

html - 逃离容器的文本

javascript - ECMAScript 6 promise

javascript - 鼠标单击按钮时更改悬停颜色

javascript - JQuery 中未检测到单选按钮更改

javascript - 更换 Click Mobile Hybrid 时出现的问题

html - 我应该使用哪种 html 文档类型?

javascript - 我无法从打开的选项卡中获取数据

jquery - 在 Firefox 和 Chrome 中,使用基本身份验证的基于 XMLHttpRequest 的 CORS 调用失败