【问题标题】:Drag & drop multiple items at once, as a stack一次拖放多个项目,作为堆栈
【发布时间】:2017-01-23 11:00:24
【问题描述】:

我正在尝试实现一个允许我一次拖动多个选定项目的系统,但是一旦开始拖动,它们应该折叠成一个堆栈,其中一个整数显示正在拖动的项目数量,而不是保留它们的单个项目相对位置。

我一直在查看现有的拖放实现,并获得了多拖工作,但我似乎无法找到一个库,允许我用我自己的实现覆盖拖动代理。

任何人都知道如何做到这一点?还是我应该考虑使用 HTML5 Drag & Drop API 或其他库编写自己的拖放解决方案?

【问题讨论】:

    标签: javascript jquery angular drag-and-drop


    【解决方案1】:

    您可以使用helper 来实现此目的。

    $(document).ready(function() {
      $('#list-items [data-action="draggable"]').draggable({
        revert: true,
        helper: function() {
          var selected = $('#list-items [data-action="draggable"].selected');
          if (selected.length === 0) {
            $(this).addClass('selected');
            selected = $(this);
          }
          var container = $('<div/>').attr('id', 'draggingContainer');
          container.append('<div>' + selected.length + '</div>')
          container.append(selected.clone());
          return container;
        }
      });
      $('#list-items [data-action="draggable"]').click(function() {
        $(this).toggleClass('selected')
      });
    });
    .selected {
      background-color: rgba(13, 173, 253, 0.37)
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
    <ul id='list-items'>
      <li data-action='draggable'>elem 1</li>
      <li data-action='draggable'>elem 2</li>
      <li data-action='draggable'>elem 3</li>
      <li data-action='draggable'>elem 4</li>
      <li data-action='draggable'>elem 5</li>
      <li data-action='draggable'>elem 6</li>
    </ul>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 2021-02-15
      相关资源
      最近更新 更多