jQuery可排序的可拖动或可拖放的多个列表到一个列表并还原

用户970008

我正在制作可排序的杂货清单,但我无法找出从排序清单中删除某项并将其返回原始类别的最佳方法。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Draggable + Sortable</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>
  ul { list-style-type: none; margin: 0; padding: 0; margin-bottom: 10px; }
  li { margin: 5px; padding: 5px; width: 150px; }
  #sortable {border: 1px solid #000; min-height:100px;}
  </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() {
    $( "#sortable" ).sortable({
      connectWith: '.connectedList'
    });
    $( ".draggable" ).draggable({
      connectToSortable: "#sortable",
      revert: "invalid"
    });
    $( "ul, li" ).disableSelection();
  } );
  </script>
</head>
<body>
<h3>Fruit</h3> 
<ul id="FruitCollection" class="fruits connectedList">
  <li class="draggable">Apples</li>
  <li class="draggable">Oranges</li>
</ul>
<h3>Meat</h3> 
<ul id="MeatCollection" class="meats connectedList">
  <li class="draggable">Beef</li>
  <li class="draggable">Chicken</li>
  <li class="draggable">Pork</li>
</ul>
<h3>Dairy</h3> 
<ul id="DairyCollection" class="dairy connectedList">
  <li class="draggable">Cheese</li>
  <li class="draggable">Milk</li>
  <li class="draggable">Sour Cream</li>
  <li class="draggable">Yogurt</li>
</ul>
 
 <h2>Grocery List</h2>
<ul id="sortable">
 
</ul>
 
 
</body>
</html>

我不确定connectWith到底如何工作。使用可拖动,可放置或可排序的组合,这似乎已经解决了问题。如果将每个类别的项目从可排序项中删除,则应仅返回该项目。

例如,将奶酪拖到杂货店列表中,然后将其拖出有边框的可排序的列表,然后将其删除。奶酪应该回到乳制品清单。

曲折的

添加用户可以单击删除类型的图标可能会更容易例:

$(function() {
  function returnToList(item) {
    var t = $("." + $(item).data("list"));
    $(item)
      .detach()
      .appendTo(t);
    $(".ui-icon", item).remove();
  }

  function addDel(item) {
    $("<span>", {
      class: "ui-icon ui-icon-close"
    }).appendTo(item);
  }

  $("#sortable").sortable({
    stop: function(e, ui) {
      if ($(".ui-icon", ui.item).length < 1) {
        addDel(ui.item);
      }
    }
  });
  $(".items li").draggable({
    connectToSortable: "#sortable",
    revert: "invalid"
  });
  $("ul, li").disableSelection();

  $(".list").on("click", "li .ui-icon-close", function() {
    returnToList($(this).parent());
  });
});
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  margin-bottom: 10px;
}

li {
  margin: 5px;
  padding: 5px;
  width: 150px;
  position: relative;
}

.items {
  width: 175px;
  display: inline-block;
  float: left;
}

.grocery {
  width: 200px;
  display: inline-block;
  margin-left: 20px;
}

#sortable {
  border: 1px solid #000;
  min-height: 100px;
}

.list li span {
  position: absolute;
  right: 4px;
  padding: 2px;
}
<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>

<div class="ui-widget">
  <div class="items list">
    <div class="ui-widget-header">Fruit</div>
    <ul id="FruitCollection" class="fruits">
      <li class="ui-widget-content" data-list="fruits">Apples</li>
      <li class="ui-widget-content" data-list="fruits">Oranges</li>
    </ul>
    <div class="ui-widget-header">Meat</div>
    <ul id="MeatCollection" class="meats">
      <li class="ui-widget-content" data-list="meats">Beef</li>
      <li class="ui-widget-content" data-list="meats">Chicken</li>
      <li class="ui-widget-content" data-list="meats">Pork</li>
    </ul>
    <div class="ui-widget-header">Dairy</div>
    <ul id="DairyCollection" class="dairy">
      <li class="ui-widget-content" data-list="dairy">Cheese</li>
      <li class="ui-widget-content" data-list="dairy">Milk</li>
      <li class="ui-widget-content" data-list="dairy">Sour Cream</li>
      <li class="ui-widget-content" data-list="dairy">Yogurt</li>
    </ul>
  </div>

  <div class="grocery list">
    <div class="ui-widget-header">Grocery List</div>
    <ul id="sortable"></ul>
  </div>

  <div class="ui-helper-clearfix"></div>
</div>

您可以使用Drag事件,但是需要一个目标。然后,事件回调将执行与Click相同的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

jQuery拖放-一个具有可排序列表,另一个具有可拖动和可拖放列表,但没有排序

在JQuery UI上执行一个可拖动的connectToSortable多个可排序对象

jQuery的UI可拖动的可排序元素到一个iframe

jQuery拖放可排序连接列表

jQuery拖放可排序列表

使用Jquery UI拖放多个选定的可拖动对象并还原无效的可拖动对象

PyQt5可拖动图标从列表视图到另一个

jQuery可嵌套无法拖动到一个空列表

jQuery拖放模拟不适用于最后一个可拖动对象

如何使用Vue可拖动从组件列表中的项目拖动到另一个组件内部的列表?

如何根据另一个活动的可排序列表对列表进行重新排序?

jQuery可排序列表,但不允许将元素拖到另一个列表中

Jquery UI 可拖动列表项到框中

jQuery的可排序的UI删除项目,当拖动到一个特定的div

组内可拖放的多个列表

jQuery UI从可排序到自由拖动

jQuery可拖动并延迟还原

我需要可拖动到json的保存列表并使用jquery还原吗?

jQuery拼图,具有可排序,可拖动和可拖放的功能

使可排序元素可拖动,可将其拖放到可放下的对象上,并在向后拖动时可以再次连接到列表

jQuery可排序连接两个列表,其中只有1个应该可排序

如何使可动态添加的列表元素在jquery中可拖动?

可排序的列表-与正确的顺序进行比较,并添加一个类以使其位置正确

将列表排序到另一个列表

从/到可拖动 div 的可排序 div

以编程方式将项目从一个可排序的已连接列表移动到另一个

jQuery UI可排序:在组的两列之间以及不同组之间拖动列表项

jQueryUI可排序多个列表而不嵌套

多个页面上可独立排序的列表