jQuery UI 可拖动:克隆项目并禁用相同的第二次拖动(原始项目)

jQuery UI Draggable: clone item and disable a second drag of the same (original item)

我有以下情况:

用户可以 select 来自不同 table 的列,这些列将包含在视图中。

我想为每个 table 的列和视图中的(用户选择的)列创建一个单独的列表。

我希望用户将 tables x, y, z 中的列拖放到视图中。

我发现了一个有趣的

 <a href="http://jsfiddle.net/B5PH4/253">JSfiddle</a>

这允许我将列表项从顶部 div 复制到目标 div 但它有一些问题:

  1. 同一个列表项可以无限次复制(应该只包含一次,然后以某种方式停用)

  2. 物品一旦放入目标就无法移除(发回)div。 我再次提到,将有 1 个目标(视图)和多个源(在dividual tables 列中)。我希望删除的项目返回右侧 tables.

我很清楚jQuery UI Sortable with Connect List。但它似乎没有给我所需的拖放控制级别 sources/targets(上面的问题 2),

你做过类似的事情吗?您至少知道解决方案的一部分吗?或者你能推荐我另一个 jQuery 插件吗?

谢谢!

我在这里修改了 jquery 示例中的列表,所以它应该是您想要的。

sortable1 和 3 是 tables,sortable2 是视图。

我只连接了 sortable 1 和 3 到 2 但不是反过来停止拖回 table 然后有一个删除按钮分离项目并使用属性来把它放回正确的地方。 你也可以像这样跟踪位置

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>jQuery UI Sortable - Connect 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{
    border: 1px solid #eee;
    width: 142px;
    min-height: 20px;
    list-style-type: none;
    margin: 0;
    padding: 5px 0 0 0;
    float: left;
    margin-right: 10px;
  }
  #sortable1 li, #sortable2 li, #sortable3 li {
    margin: 0 5px 5px 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() {
     $( "#sortable1, #sortable3" ).sortable({
        connectWith: "#sortable2"
     });
 $( "#sortable2" ).sortable({});

 $("#sortable1 span, #sortable3 span").click(function(event){
  var item = $(event.target).closest('li');
  $('#'+$(event.target).attr('parent')).append(item.detach());
 });
  } );
  </script>
</head>
<body>
 
<ul id="sortable1" class="connectedSortable">
  <li class="ui-state-default">Item 1<span parent="sortable1" style="color: red">*</span></li>
  <li class="ui-state-default">Item 2<span parent="sortable1" style="color: red">*</span></li>
</ul>
 
<ul id="sortable2" class="connectedSortable">
  <li class="ui-state-highlight">Item 1</li>
  <li class="ui-state-highlight">Item 2</li>
</ul>

<ul id="sortable3" class="connectedSortable">
  <li class="ui-state-highlight">Item 1<span parent="sortable3" style="color: red">*</span></li>
  <li class="ui-state-highlight">Item 2<span parent="sortable3" style="color: red">*</span></li>
</ul>
 
 
</body>
</html>