如何多次将同一元素拖放到JavaScript或jQuery中的另一个div框中?

Zajjith vedha

我有两个HTML div框。假设框A和框B。我想将框A多次拖放到框B中。如果我将框A​​拖放到框B之外,则框A将恢复到其原始位置。在将框A(克隆)放到框BI中之后,要将框A(克隆)移到框B中的任何位置。现在,我做了代码来做到这一点。

现在我想要的是将盒子A放到盒子B中之后,如果我将盒子A(克隆)拖放到盒子B之外,那么盒子A(克隆)需要隐藏或恢复到其原始位置(盒子A的父位置)。

HTML代码

<div id="boxB"></div>
    
        <br>

<div class="boxA">BOX A</div>

CSS代码

#boxB {
    width: 200px;
    border: 5px solid black;
    padding: 50px 50px;
    margin: auto;
    text-align: center;
    background-color: #FFFFFF;
}

.boxA {
    width: 40px;
    border: 2px solid black;
    text-align: center;
    background-color: #F5D938;
    cursor: pointer;
}

JavaScript + jQuery代码

$(document).ready(function()
    {
var x;

        $(".boxA").draggable(
        {
            helper: "clone",
            cursor: "move",
            revert: true
        });

        $("#boxB").droppable(
        {
            accept: ".boxA",
            drop: function(event, ui) 
            {
              x = ui.helper.clone();
              ui.helper.remove();
              x.appendTo('#boxB');
              $(x).draggable();
            }
        });
    });

您可以查看演示:https : //jsfiddle.net/zajjith/3kedjgb0/10/

如果我将框A​​(克隆)从框B拖放到外面,则该克隆框A需要恢复到其原始父框A的位置,或者隐藏或删除。

我希望你明白我想要的。请检查我的代码并为我提供帮助。

曲折的

请参阅https://jqueryui.com/droppable/#revert上的示例

使用您的代码,您可以执行以下操作。

$(function() {
  function getBounds(el) {
    var p = $(el).position();
    p.right = p.left + $(el).width();
    p.bottom = p.top + $(el).height();
    return p;
  }

  function isOver(a, b) {
    var ap;
    if (typeof a == "object") {
      ap = a;
    } else {
      ap = getBounds(a);
    }
    var bp = getBounds(b);
    return (ap.left > bp.left && ap.right < bp.right) && (ap.top > bp.top && ap.bottom < bp.bottom);
  }
  $(".boxA").draggable({
    helper: "clone",
    cursor: "move",
    revert: "invalid"
  });
  $("#boxB").droppable({
    accept: ".boxA",
    drop: function(event, ui) {
      var cl = ui.helper.clone();
      cl.appendTo(this).draggable({
        appendTo: "body",
        stop: function(e, ui) {
          if (isOver($.extend({}, ui.position, {
              right: ui.position.left + ui.helper.width(),
              bottom: ui.position.top + ui.helper.height()
            }), $("#boxB")) == false) {
            var a = getBounds($("body > .boxA"));
            ui.helper.animate({
              top: a.top,
              left: a.left
            }, function() {
              ui.helper.remove();
            });
          } else {
            console.log("Drop Inside");
          }
        }
      });
      ui.helper.remove();
    }
  });
});
#boxB {
  width: 200px;
  border: 5px solid black;
  padding: 50px 50px;
  margin: auto;
  text-align: center;
  background-color: #FFFFFF;
}

.boxA {
  width: 50px;
  border: 2px solid black;
  text-align: center;
  background-color: #F5D938;
  cursor: pointer;
}
<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 id="boxB"></div>
<br />
<div class="boxA">BOX A</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从数组中获取一个随机元素而又不多次获取同一元素?

javascript拖放-防止元素拖放到另一个droppable元素中

如何使一个元素中的文本与另一元素中的文本内联?

如何将元组列表中的唯一元素作为另一个元组返回

当另一个在同一元素上运行时如何应用新的变换动画

如何检查同一元素上是否存在另一个指令

如何多次将同一元素添加到数组?

如何检查数据框行的一个元素中的字符串是否在另一元素中

如何在ng-show中多次显示同一元素?

在同一元素中获取下一个类名

Javascript多次推/移同一元素

拖动元素时将内部html拖放到另一个元素中

Python-用另一个列表中的唯一元素替换列表中的重复元素

如何用另一个元素替换div元素中的同一行-javascript

单击同一 div 中的另一个元素后,如何选择特定元素

在React中,如何更改在迭代中创建的一个元素的类名,另一元素的onclick?

使用另一个数组中的唯一元素将函数应用于值数组

如何使用语法“flex:x”将同一行中的一个元素在左侧对齐,另一个在中间对齐

仅从同一元素中获取 1 个元素,但仅获取不同的文本

单击时如何获取同一div中另一个元素的值?

跟踪对同一元素的多次点击

多次查找同一元素的索引,Java

C ++如何在两个不同的std :: lists中删除引用同一元素的指针?

JavaScript中同一元素上的多个区间和函数

遍历javascript对象并在同一元素中输出结果

如何将数组中的特定元素放到另一个数组中

如何从数据框中获取每个类别中的唯一元素及其计数?

javascript中是否有一种方法可以识别何时将鼠标悬停在同一元素上以及何时在另一元素上?

如何对车把中的同一元素进行绑定和操作?