首页 > 解决方案 > jQuery UI Draggable 不适用于子元素

问题描述

div我的目标是在更大的区域内创建一个框(一个元素) div(我们称之为“画布”,但不要与 HTML 的画布元素混淆),并让用户可以将它们拖到画布区域的各个部分。可以通过单击链接(<a>标签)来创建框。

我面临两个问题:

  1. 网站第一次加载时,按下链接确实会在几分之一秒内显示该框,但会清除画布。我需要再次按下链接,该框才会出现并保留在画布上。我添加{revert: false}为输入draggable()但没有解决它。
  2. 出现的框是不可拖动的。

我不确定我错在哪里。

$(function() {
  $(".dropdown-btn").click(function() {
    $(".canvas").append('<div class="indi-box"><div>Indicator</div><form><select id="dropdown"><option value="1">1</option><option value="2">2</option></select></form><div>');
  });
  $(".indi-box").draggable({
    revert: false
  });
});
.canvas {
  height: 50vw;
  width: 90vw;
  background-color: powderblue;
  border: 2px solid grey;
}

.indi-box {
  background-color: #336DFF;
  display: inline-block;
  padding: 0.5em;
  margin: 2px;
}

#dropdown {
  margin: 15px;
}
<link href="https://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

<body>
  <a href="#" class="dropdown-btn">Create Box</a>
  <div class="canvas"></div>
</body>

标签: jquery

解决方案


它不起作用,因为具有类的元素indi-box不存在时

  $(".indi-box").draggable({
    revert: false
  });

试试这个:

  $(".dropdown-btn").click(function() {
    $(".canvas").append('<div class="indi-box"><div>Indicator</div><form><select id="dropdown"><option value="1">1</option><option value="2">2</option></select></form><div>');
    $(".indi-box").draggable({
      revert: false
    });
  });

推荐阅读