jquery 可拖动元素在放置后不再可拖动

标签 jquery drag-and-drop

我希望能够重复拖放相同的源元素。

当拖动图像时,它已成功克隆 - 即原始图像保持不变,克隆图像很好地落入新位置,但旧图像不再可拖动。检查元素显示 class 作为属性(无值),即不是 class="ui-draggable"

正如您所见,我尝试在克隆后重新启用原始文件的可拖动性,但它不起作用。

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head> 
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js"></script>
  <title></title>
  <script language="javascript" type="text/javascript">
    var copy = 0;
    var dragOptions = {
      helper: 'clone',
      cursor: 'hand',
      revert: 'invalid'
    };
    $(document).ready(function () {
      $("img").draggable(dragOptions);
      $("ul#bag > li").droppable({
        drop: function (event, ui) {
          copy++;
          var clone = $(ui.draggable).clone().attr("id", "img_" + copy);
          $(this).append(clone);
          clone.css("left", 0).css("top", 0);
          $(ui.draggable).draggable(dragOptions);
        }
      });
    });
</script>
  <style type="text/css">
    li
    {
      position: relative;
      float: left;
    }

    img
    {
      cursor: move;
    }

    div, li
    {
      display: block;
      width: 160px; 
      height: 123px;
      margin: 2px;
      border: solid 1px gray
    }

    .clear
    {
      clear: both;
    }
  </style>
</head>
<body>

  <ul id="bag">
    <li></li>
    <li></li>
    <li></li>
  </ul>

  <ul id="shop">
    <li><img id="img1" src="images/p1.jpg" /></li>
    <li><img id="img2" src="images/p2.jpg" /></li>
    <li><img id="img3" src="images/p3.jpg" /></li>
  </ul>

  <div class="clear" id="dustbin" style="background-color:Black;"></div>
</body>
</html>

最佳答案

因此,一旦项目被拖动,可拖动小部件就会调用其自己的 destroy() 函数,该函数会从元素中删除任何可拖动性。

由于没有明显的方法可以用选项或事件覆盖它,我在 document.ready 中用暴力覆盖了它:

$.ui.draggable.prototype.destroy = 函数 (ul, item) { };

现在可以了。

关于jquery 可拖动元素在放置后不再可拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020695/

相关文章:

javascript - 如何使更改事件仅在为类调用事件时运行一次

python - Python拖放损坏

javascript - 如何使所有 future 日期不可点击

javascript - 如何仅针对鼠标事件而不是键盘选项卡式导航删除 anchor 链接的虚线焦点轮廓?

jquery - DIV 中始终可见的保存/取消元素?

android - DragSortListView 无法在 SwipeRefreshLayout 上向下拖动

google-chrome - 在 Chrome 和 Edge 中拖放时 Surface Pen 出现问题

javascript - 如何在 html 5 中创建拖放功能?

JavaScript 在网页上拖放 Div

javascript - 溢出:隐藏在 firefox 3.6 中