可排序、可拖放和可拖动的容器

Posted

技术标签:

【中文标题】可排序、可拖放和可拖动的容器【英文标题】:A container that is sortable, droppable and draggable 【发布时间】:2013-03-19 01:21:32 【问题描述】:

这个问题与 jQuery 的 UI 有关。

谁能提供一个例子:

    容器 A 是可排序和可放置的 可以将任何元素拖入容器 A 中然后进行排序。 任何元素都可以从容器 A 中拖出,然后简单地在页面中拖动即可。 容器 A 也可以在页面周围拖动

这是我目前所拥有的:

$(function() 
    $("#sortable").sortable().droppable();
    $("#sortable").disableSelection();
    $("#drop").droppable(
        accept: "#sortable li",
        drop: function (evt, ui) 
            var $destination = $(this); 
            ui.draggable.appendTo( $destination ); 

        
    ).draggable();
);

我在这里创建了一个小提琴: http://jsfiddle.net/eEJHb/1/

我遇到的问题: A)我无法将可排序的内容放入容器中 B)一旦进入容器,我需要将元素拖回可排序列表

感谢您的帮助!

更新** 我的部分问题在于选项“connectWith”。它根本行不通。相反,我使用了“connectToSortable”选项(作为可拖动选项中的一个选项),我能够让可排序和可拖动选项一起工作。

【问题讨论】:

你试过什么?你做了什么研究?这不是代码生成器网站... 我更新了我的问题 所以你现在工作了吗?你能创建一个新的小提琴来展示它的工作原理吗? 【参考方案1】:

在找到this之前我遇到了同样的问题

    $(function () 
        $("#timetable .items").sortable(
        	connectWith: "ul"   
        );
        
        $("ul[id^='available']").draggable(
            helper: "clone",
            connectToSortable: ".items"
        );
    );
<style type="text/css">
.bar 
    width: 100px;
    height: 20px;
    margin: 2px;
    border: 1px solid black;
    background-color: lightgreen;
    text-align: center;
    float: left;
    margin: 2px;
    padding: 2px;
    cursor: pointer;
    border-radius: 3px;


.list 
    background-color: lightblue;
    border: 1px solid gray;


.items .ui-selected 
    background: red;
    color: white;
    font-weight: bold;


.items 
    list-style-type: none;
    margin: 0;
    padding: 0;
    width: 100px;


.items li 
    margin: 2px;
    padding: 2px;
    cursor: pointer;
    border-radius: 3px;


.weekday 
    float: left;


.availablelist 
    background-color: orange;
    display: inline;

</style>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script type="text/javascript" src="http://www.pureexample.com/js/lib/jquery.ui.touch-punch.min.js"></script>


<div style="float:left;width:500px;">
    <div>Available employee</div>
    <ul id="available1" class="items">
        <li class="list availablelist">Jhonny</li>
    </ul>
    <ul id="available2" class="items">    
        <li class="list availablelist">Tim</li>
    </ul>
    <ul id="available3" class="items">    
        <li class="list availablelist">George</li>
    </ul>
    <ul id="available4" class="items">    
        <li class="list availablelist">Melissa</li>
    </ul>
    <ul id="available5" class="items">    
        <li class="list availablelist">Alice</li>
    </ul>
</div>
<div style="clear:both"></div>
<div id="timetable" style="float:left;width:700px;">
    <div style="text-align:center">Time table</div>
    <div class="weekday">Monday
        <ul class="items">
            <li class="list">Jhonny</li>
            <li class="list">Tim</li>
            <li class="list">George</li>
            <li class="list">Melissa</li>
            <li class="list">Alice</li>
        </ul>
    </div>
    <div class="weekday">Tuesday 
        <ul class="items">
            <li class="list">Jhonny</li>
            <li class="list">Tim</li>
            <li class="list">George</li>
            <li class="list">Melissa</li>
            <li class="list">Alice</li>
        </ul>
    </div>
    <div class="weekday">Wednesday 
        <ul class="items">
            <li class="list">Jhonny</li>
            <li class="list">Tim</li>
            <li class="list">George</li>
            <li class="list">Melissa</li>
            <li class="list">Alice</li>
        </ul>
    </div>
    <div class="weekday">Thursday 
        <ul class="items">
            <li class="list">Jhonny</li>
            <li class="list">Tim</li>
            <li class="list">George</li>
            <li class="list">Melissa</li>
            <li class="list">Alice</li>
        </ul>
    </div>
    <div class="weekday">Friday
        <ul class="items">
            <li class="list">Jhonny</li>
            <li class="list">Tim</li>
            <li class="list">George</li>
            <li class="list">Melissa</li>
            <li class="list">Alice</li>
        </ul>
    </div>
    <div class="weekday">Saturday
        <ul class="items">
            <li class="list">Jhonny</li>
            <li class="list">Tim</li>
            <li class="list">George</li>
            <li class="list">Melissa</li>
            <li class="list">Alice</li>
        </ul>
    </div>
    <div class="weekday">Sunday
        <ul class="items">
            <li class="list">Jhonny</li>
            <li class="list">Tim</li>
            <li class="list">George</li>
            <li class="list">Melissa</li>
            <li class="list">Alice</li>
        </ul>
    </div>
</div>

【讨论】:

也许可以解释一下...? 没有什么可以解释的,我拼错了评论【参考方案2】:

我建议您查看此文档:

http://jqueryui.com/sortable/#connect-lists

http://jqueryui.com/draggable/#sortable

以及这些问题的答案:

Getting jQuery sortable, droppable and draggable to work together

jQuery-UI Draggable and Sortable

【讨论】:

【参考方案3】:

您可以使用来自 jquery-ui 的交互。它提供可拖动和可排序的交互。

Here are examples.

【讨论】:

以上是关于可排序、可拖放和可拖动的容器的主要内容,如果未能解决你的问题,请参考以下文章

可拖动、可拖放和可移动的触摸幻灯片

jQuery 可拖放和可滚动的 div

jquery可拖动和鼠标悬停

jQuery 可在两个容器之间拖放和拖放,并且可排序

jQuery 可拖动和可拖放,在可拖动 ul 上滚动

可拖动+可排序和可滚动的 div