jquery ui draggable中如何避免div的叠加?

罗兰 F。

我在容器内动态生成一些 div,这些 div 可以使用最新版本的 jquery-ui 进行拖动。问题是当一个 div 移动到另一个位置时,它不尊重其他 div 的空间,所以它可以在另一个 div 的顶部,我不想要那样。

如果我决定移动一个 div 并将其放在另一个 div 上,就会发生这种情况: 这是错误的一个例子

这种行为不好,最好是如果我尝试将一个 div 放在另一个 div 上,则不会执行此操作。

这是我的 html 代码:

<div class="container">
    <div class="row" id="main_row_blog_results"> 
         <!--here the divs are dynamically generated -->
    </div>
</div>

这是我的JS代码:

$(document).ready(function(){
    $("#btnAddTextsBlog").click(function(){
        var texts = "this is a random text";
        var content2 = "<div id='text1' class='draggable' style='float: left; margin-left: 30px; margin-right: 30px; margin-top: 30px; display: block;'><p contenteditable='true' style='font-size: 18px;'>"+texts+"</p></div>";

        $("#main_row_blog_results").append(content2); 

        $(".draggable").draggable(); 

    });         
    $( '.draggable' ).draggable({

    });

我想知道我该怎么做当用户拖动 div 并将其放入其他 div 的空间时,将此 div 移回其原始位置...想法是防止 div 之间发生碰撞?

曲折的

我会建议如下:

$(function() {
  function makeDrag(obj) {
    obj.draggable({
      handle: ".drag-handle",
      revert: "invalid"
    });
  }

  $("#btnAddTextsBlog").click(function() {
    var content = $("<div>", {
      id: "text" + ($(".draggable").length + 1),
      class: "draggable",
    }).css({
      float: "left",
      margin: "30px",
      "margin-bottom": 0,
      disply: "block"
    }).appendTo($("#main_row_blog_results"));

    $("<span>", {
      class: "ui-icon drag-handle 	ui-icon-arrow-4-diag"
    }).css({
      border: "1px solid #000",
      "border-radius": "3px",
      "margin-right": "3px"
    }).appendTo(content);

    $("<p>", {
      contenteditable: true
    }).css({
      "font-size": "18px",
      display: "inline-block"
    }).html("this is a random text").appendTo(content);

    makeDrag(content);
  });

  makeDrag($(".draggable"));
});
.drag-handle:hover {
  background-color: #ccc;
}
<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>
<button id="btnAddTextsBlog">Add</button>
<div class="container">
  <div class="row" id="main_row_blog_results">
    <!--here the divs are dynamically generated -->
  </div>
</div>

所以revert有几个选择。我在invalid这里使用

如果设置为"invalid",则仅当可拖动对象尚未放置在可放置对象上时才会发生还原。对于"valid",情况正好相反。

我还添加了一个句柄,因为如果用户去编辑<p>元素,他们可能会点击它来编辑它,它可能会尝试拖动。因此,为了避免任何潜在的混淆,我们使用了句柄。

我从附加 HTML 字符串转移到创建 jQuery 对象,这些对象在创建动态项目时更容易操作。

我还创建了一个可以将 jQuery 对象初始化为可拖动对象的小函数。这有助于始终使用相同的设置设置每个。

希望有帮助。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可滚动DIV中的jQuery UI Draggable Clone

来自分类Dev

如何避免jquery ui工具提示出现在子div中?

来自分类Dev

jQuery UI Draggable:点击堆叠

来自分类Dev

jQuery UI Draggable on droppable元素

来自分类Dev

jQuery UI .draggable和Chrome

来自分类Dev

jQuery UI Draggable不会调整其他DIV的大小

来自分类Dev

JQuery UI Draggable Div,具有滚动条鼠标

来自分类Dev

jQuery UI Draggable:拖动比容器更大的div

来自分类Dev

在jQuery-ui-1.10.3中未定义data(“ draggable”)

来自分类Dev

如何在jQuery UI中使用Draggable和Droppable将拖放的li附加到droppable ui中?

来自分类Dev

如何在jQuery UI中使用Draggable和Droppable将拖动的li附加到droppable ui中?

来自分类Dev

jQuery UI Sorting in滚动div

来自分类Dev

DIV的jQuery-UI的CSS

来自分类Dev

jQuery UI 销毁父 div

来自分类Dev

如何使用jQuery UI在contenteditable div中拖放文本

来自分类Dev

jQuery UI div中的ul connectwith

来自分类Dev

带有jQuery UI Draggable的Owl Carousel

来自分类Dev

具有Bootstrap布局的jQuery UI Draggable

来自分类Dev

jQuery UI draggable scrollSpeed的单位是什么?

来自分类Dev

日历的jQuery UI Droppable和Draggable

来自分类Dev

带有jQuery UI Draggable的Owl Carousel

来自分类Dev

具有Bootstrap布局的jQuery UI Draggable

来自分类Dev

如何使Jquery ui datepicker范围

来自分类Dev

jQuery UI DatePicker中的setDate

来自分类Dev

Dart中的事件Jquery UI

来自分类Dev

jQuery UI中的多个功能

来自分类Dev

Dart中的事件Jquery UI

来自分类Dev

在Jquery UI中拖放事件

来自分类Dev

为什么在此示例中jQuery UI UI Draggable速度慢