как использовать JQuery для вставки после и добавления с помощью перетаскивания и сбрасывания? - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь создать редактор 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 Ответ

0 голосов
/ 22 марта 2020

Несколько заметок:

  • для 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...