jquery:在没有克隆的情况下删除后使元素可拖动

时间:2016-03-21 17:56:15

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

$(".drag").draggable({
  start: function() {
    $(this).height(150).width(195);
  },
  cursor: "move",
  revert: "invalid",
  appendTo: "body",
  containment: "document",
  helper: "clone",
  distance: 50
});

$(".drop").droppable({
      hoverClass: "hoverDrop",
      tolerance: "pointer",
      drop: function(event, ui) {
          var elem = $(ui.draggable).clone();
          $(this).append(elem);
          $(this).droppable('disable'); //disbles more than one draggable from being dropped
          // console.log(this);
          $(elem).draggable({
            helper: "clone",
            drag: function(event, ui) {
              $(elem).prev().empty();
            }
          });
        } //end of drop function

大家好!我正在拖放一个活动(td元素),然后将其放入另一个td中的另一个table。删除之后,我希望能够将该元素拖动到同一td中的另一个table中(例如围绕时间表拖动课程表)

我设法“重新拖动”掉落的元素,但不是“移动”到另一个td,我似乎能够做的就是继续克隆我拖动的元素。如何确保当我“重新拖动”我最初删除的元素时,它会从首次删除的初始td中删除,然后“移动”到后续的td

1 个答案:

答案 0 :(得分:2)

如果您想维持"可拖动性",您可以将ui.draggable追加到新的td。这样,你仍然可以拖动项目被删除,让你自由地统治每个项目的位置。

我已经稍微简化了您的示例,特别是drop事件。我还删除了一些options的简单性和更少的失败点。您可以在项目中重新添加options

$('.drag').draggable({
  cursor: "move",
  revert: true,
  appendTo: "body",
  containment: "document",
  distance: 50
});

$('.drop').droppable({
  hoverClass: "hoverDrop",
  tolerance: "pointer",
  drop: function(event, ui) {
    $(this).find('ul').append(ui.draggable);
  }
});

<强> Fiddle Demo

如果您有任何疑问,请询问。