【问题标题】:Drop a sortable into a sortable (nested divs)将可排序对象放入可排序对象(嵌套 div)
【发布时间】:2016-09-06 11:36:51
【问题描述】:

我创建了一个代码,允许我将 div 从第 1 列拖放到第 2 列。第 2 列是可排序的。

这很好用,但我现在想将一个 div 从第 1 列拖到一个已经被放到第 2 列的 div 中。

到目前为止,这是我的代码:

HTML

<div id="column1">
    <p>Items</p>
    <div class="dragItem">Drag me ONE</div>
    <div class="dragItem">Drag me TWO</div>
    <div class="dragItem">Drag me THREE</div>
</div>
<div id="column2" class="droppable">
    <p>Drop here</p>
</div>

jQuery:

$('.dragItem').draggable({
    helper: 'clone',
    connectToSortable: "#column2"
});

$('.dragItem').sortable({
    containment: "parent"
});

$('#column2').sortable({
    cancel: '#cont>div',
    placeholder: "highlight"
});

$('#column2').droppable({
    accept: '.dragItem',
    drop: function(event, ui) {
        var draggable = ui.draggable;
        var droppable = $(this);
        var drag = $('#column2').has(ui.draggable).length ? draggable : draggable.clone().draggable({});
        drag.appendTo(column2); 
    }
});

谢谢

【问题讨论】:

    标签: jquery jquery-ui jquery-ui-draggable jquery-ui-sortable jquery-ui-droppable


    【解决方案1】:

    一旦项目被丢弃 - 您需要将 sortabledroppable 应用于该 div。

    这是一个例子:

    $('.dragItem').draggable({
      helper: 'clone',
      connectToSortable: "#column2,#column2 div"
    });
    
    $('.dragItem').sortable({
      containment: "parent"
    });
    
    $('#column2').sortable({
      placeholder: "highlight"
    });
    
    $('#column2').droppable({
      accept: '.dragItem',
      drop: function(event, ui) {
        var draggable = ui.draggable;
        var droppable = $(this);
        var drag = $('#column2').has(ui.draggable).length ? draggable : draggable.clone().draggable({});
        drag.appendTo(column2); 
        drag.sortable({
          placeholder: "highlight"
        });
        drag.droppable({
          accept: ".dragItem",
          drop: function (event, ui) {
            var draggable = ui.draggable;
            var droppable = $(this);
            var drag = $('#column2').has(ui.draggable).length ? draggable : draggable.clone().draggable({});
          }
        })
        drag.css({width:'', height: ''})
      }
    });
    #column1, #column2 {
      width: 250px;
      margin-right: 10px;
      border: 1px solid red;
      float: left
    }
    .droppable div {
      border: 1px solid blue;
      margin: 5px;
      padding: 5px;
    }
    <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.0/jquery-ui.min.js"></script>
    <link rel="stylesheet" type="text/css" media="screen" href="https://code.jquery.com/ui/1.12.0/themes/base/jquery-ui.css" />
    <div id="column1">
      <p>Items</p>
      <div class="dragItem">Drag me ONE</div>
      <div class="dragItem">Drag me TWO</div>
      <div class="dragItem">Drag me THREE</div>
    </div>
    <div id="column2" class="droppable">
      <p>Drop here</p>
    </div>

    【讨论】:

      猜你喜欢
      • 2013-10-08
      • 2016-05-15
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      相关资源
      最近更新 更多