编程语言
首页 > 编程语言> > javascript-使可排序元素可拖动,可将其拖放到可放下的对象上,并在拖回时可以再次连接到列表

javascript-使可排序元素可拖动,可将其拖放到可放下的对象上,并在拖回时可以再次连接到列表

作者:互联网

我想一起使用jQuery-ui可拖放,可拖放和可排序.

我的功能如下:

>我有一个可排序的列表
>我创建了一个可放置的div
>可排序的项目是可拖动的,可以放在可放置在div内自由移动的可放置对象上
>当将可拖动项拖到可排序列表时,应将其重新连接到可排序列表

我提供了一些图像,可能有助于使它更加清晰:

A sortable list to the left and an empty div which constrains the movement of a draggable element on the right

左侧为可排序列表,空div限制了右侧可拖动元素的移动.

Element C is moved from sortable list to the div. It can be placed anywhere within this div, but not outside of it. It can also be connected back to the sortable.

元素C从可排序列表移至div.可以将其放置在此div中的任何位置,但不能放置在其外部.也可以将其连接回排序对象.

Element C is connected back to the sortable.

元素C重新连接到可排序对象.

任何帮助将不胜感激.谢谢!

下面是我的代码:

$("#sortable1").sortable({
    connectWith: '.connectedSortable, #trash'
}).disableSelection();

$("#drop_zone").droppable({
    accept: ".connectedSortable li",
    hoverClass: "ui-state-hover",
    drop: function (ev, ui) {
        ui.draggable.sortable("destroy");
        ui.draggable.draggable({
            connectToSortable: "#sortable1",
            containment: "#drop_zone"
        });
    }
});



<ul id="sortable1" class="connectedSortable ui-helper-reset">
    <li class="ui-state-default">A</li>
    <li class="ui-state-default">B</li>
    <li class="ui-state-default">C</li>
    <li class="ui-state-default">D</li>
</ul>

<ul id="drop_zone" class="ui-helper-reset"></ul>

像这样吗http://jsfiddle.net/yfc9h4gq/

解决方法:

我已经创建了这个DEMO

我添加了一个新的< div id =“ main_container”>包含可排序列表和可放置对象.因此,现在将元素拖放到droppable中之后,该droppable将包含在#main_container中

这是代码:

HTML:

<div id="main_container">
<ul id="sortable1" class="connectedSortable ui-helper-reset">
    <li class="ui-state-default">A</li>
    <li class="ui-state-default">B</li>
    <li class="ui-state-default">C</li>
    <li class="ui-state-default">D</li>
</ul>

<ul id="drop_zone" class="ui-helper-reset"></ul>
</div>

JS:

$("#sortable1").sortable({
    stop: function(event, ui) {
        ui.item.attr("style", "");
    }
});

$("#drop_zone").droppable({
    accept: ".connectedSortable li",
    hoverClass: "ui-state-hover",
    drop: function(ev, ui) {
        ui.draggable.remove();
        var item = ui.draggable.clone();
        item.appendTo($(this));
        item.draggable({
            connectToSortable: "#sortable1",
            containment: "#main_container"
        });
    }
});

标签:jquery-ui-draggable,jquery-ui,jquery-ui-sortable,javascript,jquery
来源: https://codeday.me/bug/20191110/2013339.html