Менять местами элементы при перетаскивании друг на друга с помощью пользовательского интерфейса jQuery - PullRequest
8 голосов
/ 02 октября 2011

У меня есть расположение элементов на странице:

<div>
  <div class="dragdrop" style="top:0px;  left: 0px;  ">1</div>
  <div class="dragdrop" style="top:40px; left: 0px;  ">2</div>
  <div class="dragdrop" style="top:60px; left: 0px;  ">3</div>
  <div class="dragdrop" style="top:0px;  left: 100px;">4</div>
  <div class="dragdrop" style="top:40px; left: 100px;">5</div>
  <div class="dragdrop" style="top:60px; left: 100px;">6</div>
</div>

Как я могу использовать jQuery UI (Draggable / Droppable), чтобы сделать так, что если один div падает на другой, они меняются местами?(И если его перетаскивают куда-либо еще, он возвращается к своей прежней позиции.)

Спасибо.

Ответы [ 3 ]

14 голосов
/ 05 октября 2011

Вот пример того, как вы можете менять местами элементы с помощью перетаскивания. http://jsfiddle.net/76yRN/1/

Еще один вопрос о замене элементов в jquery Перетаскиваемые элементы jQuery теряют свою перетаскиваемость после замены (с примером jsfiddle)

Надеюсь, это поможет

1 голос
/ 19 марта 2013

Вы просто заменяете элементы от одного к другому.Некоторое время назад я создал демо для обмена элементами между списками UL.проверьте это: http://www.authorcode.com/swap-elements-when-drag-one-onto-another-using-jquery-ui/

0 голосов
/ 08 мая 2014

Я использовал комбинацию решений для достижения этого, с #large_tiles и #small_tiles, являющимися двумя списками:

$(function() {
$("#large_tiles li, #small_tiles li").draggable({
    zIndex: 2,
    appendTo: "body",
});

initDroppable($("#large_tiles li, #small_tiles li"));

initSwap();
function initSwap() {
    initDroppable($("#large_tiles li, #small_tiles li"));
    initDraggable($("#large_tiles li, #small_tiles li"));
}
function initDraggable($elements) {
    $elements.draggable({
        zIndex: 2,
        appendTo: "body",
        helper: "clone",
        start: function(e, ui) {
            $(ui.helper).addClass("clone");
        },
        cursorAt: { left:50, top:75 }
    });
}
function initDroppable($elements) {
    $elements.droppable({
        activeClass: "active-tile",
        hoverClass: "hover-tile",
        over: function(event, ui) {
            var $this = $(this);
        },
        drop: function(event, ui) {
            var $this = $(this);
            var linew1 = $(this).after(ui.draggable.clone());
            var linew2 = $(ui.draggable).after($(this).clone());
            $(ui.draggable).remove();
            $(this).remove();
            initSwap();
        }
    });
}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...