jQuery 2D 拖放元素(非绝对位置)

Posted

技术标签:

【中文标题】jQuery 2D 拖放元素(非绝对位置)【英文标题】:jQuery 2D drag and drop element (Not absolute position) 【发布时间】:2020-07-18 15:34:48 【问题描述】:

我将使用拖放将外部元素放入内部 html。 所以我假设是这样的。这是内部 html。

<div class="inner_html">
   <div class="title">
     <h1>This is title</h1>
   </div>
   <div class="body">
     <li>this is element</li>
     <a>element</a>
   </div>
</div>

这里是外部 html。 &lt;div&gt;This is external element&lt;/div&gt;

我将拖动外部元素并放入内部 html。 所以final element可以得到很多结果。 我认为如果位置是绝对的,那么可以使用 jquery 可拖动插件轻松完成。 但我不想要绝对位置。只想放入内部html。

谁能帮帮我?

【问题讨论】:

如果我理解正确,您首先需要代码来检测初始鼠标点击和对象点击。然后,检测释放点和释放发生的对象。最后,将第一个元素克隆到最后一个元素中并删除剩余的元素。还要检查这个:***.com/questions/22799779/… 谢谢,我会查的。 请查看:jqueryui.com/droppable 这是一个带有 jQ​​uery UI 库的基本拖放示例。 另外,&lt;li&gt; 不应该是 &lt;div&gt; 的子级。 snipboard.io/Bx0W7A.jpg 好吧,我打算删除这张图片,但它没有用。只是作为可拖动的,作为相对位置工作。 【参考方案1】:

考虑下面的代码。

$(function() 
  $(".drag > div").draggable();
  $(".inner_html").droppable(
    drop: function(e, ui) 
      ui.draggable.css(
        top: "",
        left: "",
        position: "inherit"
      ).appendTo($(".inner_html"));
    
  );
);
.inner_html 
  width: 340px;
  background: #ccc;
  padding: 1em;
  margin-bottom: 20px;


.inner_html>div 
  background: white;
  border: 1px solid #222;
  border-radius: 3px;


.drag 
  border: 1px solid #ccc;
  width: 340px;
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<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>
<div class="inner_html">
  <div class="title">
    <h1>This is title</h1>
  </div>
  <div class="body">
    <a>Link</a>
  </div>
</div>
<div class="drag items">
  <h3>Items</h3>
  <div>This is external element</div>
</div>

这是一个非常简单的例子。根据您的评论,您似乎有一个更复杂的情况。您应该提供a Minimal, Reproducible Example。

【讨论】:

以上是关于jQuery 2D 拖放元素(非绝对位置)的主要内容,如果未能解决你的问题,请参考以下文章

jquery拖放和克隆,找到元素的放置位置

如何使可拖动元素在拖放时保持在新位置(HTML5 不是 jQuery)?

第十五节 jQuery获取元素的绝对位置

浮动底部 - 彼此顶部

Photoshop 之类的画布图像可拖放、可缩放的图像在拖动时出现绝对位置问题

获取鼠标在拖放 jquery 上的位置