为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 JQuery 在使用可拖放和可拖放之后插入和追加?

如何使用 JQuery 在使用可拖放和可拖放之后插入和追加?

一只甜甜圈 2022-05-26 11:18:54
我正在尝试构建一个 Bootstrap 编辑器。我有一个<li>假定的 Bootstrap 类或工具的菜单,无论如何。<li>添加新部分和<li>添加一些工具是有区别的。添加一个我在之后使用插入的部分并添加我使用附加的工具。这里的部分是“当前”或“新”。jQuery<script>    $(function () {        $(".draggable").draggable({            helper: "clone",            end: function (e, ui) {                const Holded_ItemID = ui.draggable.attr("id");                if (Holded_ItemID == 'Sec') {                    $("li").removeClass("NewSection");                     $(ui.helper).addClass("NewSection");                }            }        });        $("#droppable").droppable({            drop: function (e, ui) {                const Holded_ItemID = ui.draggable.attr("id");                if (Holded_ItemID == 'Sec') {                //to insert new section after current section                $(this).children().last().insertAfter($(ui.draggable).clone());                }                else                {                //to add elemnt inside the new section                    $('.NewSection').append($(ui.draggable).clone());                };            }        });    });</script>HTML    <ul>        <li id="Sec" class="draggable">add new section</li>        <li class="draggable ui-widget-content">add new grid</li>        <li class="draggable ui-widget-content">add new button</li>        <li class="draggable ui-widget-content">add new Image</li>        <li class="draggable ui-widget-content">add new card</li>        <li class="draggable ui-widget-content">add new media objects</li>    </ul>    <div class="droppable ui-widget-header">      <p>Area Of web design</p>    </div>CSS  <style>  .draggable { width: 170px; height: 20px; border:1px dotted black; padding: 1px 1px 1px 10px; margin:3px; }  .droppable { width: 500px; height: 300px; padding: 0.5em; float: left; margin: 10px; padding:10px; background-color:antiquewhite; }  </style>简单地说,我无法将 li 菜单中的任何内容添加到可放置区域中。为什么,我的代码有什么问题?
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

几点注意事项:

  • 因为draggable({})你必须使用stop()事件而不是end

  • 我曾经ui.helper访问拖动的元素。

  • 而不是$(this).children().last().insertAfter我使用的只是附加,不知道你为什么使用它,所以你可能想根据需要修改我的更改。

我想这就是你想要的

$(function () {

  $(".draggable").draggable({

    helper: "clone",

    stop: function (e, ui) {

      //console.log(ui.helper[0]);

      const Holded_ItemID = $(ui.helper[0]).attr("id");

      if (Holded_ItemID == 'Sec') {

        $("li").removeClass("NewSection"); 

        $(ui.helper[0]).addClass("NewSection");

      }

    }

  });


  $("#droppable").droppable({

    drop: function (e, ui) {

      const Holded_ItemID = $(ui.draggable[0]).attr("id");

      if (Holded_ItemID == 'Sec') {

      //to insert new section after current section

        $("#droppable").append(ui.draggable[0])

        //$(this).children().last().insertAfter($(ui.draggable).clone());

      } else {

        //to add elemnt inside the new section

        $("#droppable").append($(ui.draggable[0]).clone());

      };

    }

  });

});

.draggable { width: 170px; height: 20px; border:1px dotted black; padding: 1px 1px 1px 10px; margin:3px; }

.droppable { width: 500px; height: 300px; padding: 0.5em; float: left; margin: 10px; padding:10px; background-color:antiquewhite; }

<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>

<ul>

    <li id="Sec" class="draggable">add new section</li>

    <li class="draggable ui-widget-content">add new grid</li>

    <li class="draggable ui-widget-content">add new button</li>

    <li class="draggable ui-widget-content">add new Image</li>

    <li class="draggable ui-widget-content">add new card</li>

    <li class="draggable ui-widget-content">add new media objects</li>

</ul>


<div id="droppable" class="droppable ui-widget-header">

  <p>Area Of web design</p>

</div>


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号