javascript - 在 Sortable.js 中拖放列表 : How to set a different drop area than a Sortable list?

标签 javascript jquery html jquery-ui jquery-ui-sortable

我正在使用这个小示例测试 Sortable.js 列表。我有一个要从中拖动的元素列表,以及另一个通过删除元素来存储它们的列表。

注意:Sortable.js 与 JQuery-ui sortable 不同,但缺乏 Sortable.js 文档让我考虑切换到 JQuery-ui Sortable,所以我会接受使用它的答案。

问题是,放置区域是列表,将其放置在列表面板的边缘并且无法正确放置项目有点令人沮丧。另外,如果列表没有边框,则很难找到空列表。

Sortable.js has an attribute named ghostClass ,根据文档,它应该存储放置占位符的类名。

所以我使用第二个列表面板的类名作为第一个列表的 GhostClass。然而,它不起作用,并且项目只有在列表上方而不是面板上方时才能正确放置。

HTML:

<div class="panel panel-primary">
    <div class="panel-heading">Fruit store</div>
    <div class="panel-body">
        <ul id="fruit-list" class="list-group">
            <li href="#" class="list-group-item" data-type="apple">Apple</li>
            <li href="#" class="list-group-item" data-type="pear">Pear</li>
            <li href="#" class="list-group-item" data-type="banana">Banana</li>
            <li href="#" class="list-group-item" data-type="watermellon">Watermellon</li>
        </ul>
    </div>
</div>
<div class="panel panel-primary droppable-area">
    <div class="panel-heading">Shopping cart</div>
    <div class="panel-body">
        <ul id="cart-list" class="list-group">
            <li href="#" class="list-group-item" data-type="banana">Banana
                <div class="pull-right"> <span id="badge" class="badge">5</span>

                </div>
            </li>
            <li href="#" class="list-group-item" data-type="pear">Pear
                <div class="pull-right"> <span id="badge" class="badge">2</span>

                </div>
            </li>
        </ul>
    </div>
</div>

JS:

// Create fruit store list
var list_element = document.getElementById("fruit-list");
var fruit_list = new Sortable(list_element, {
    group: {
        name: "fruit_group",
        pull: 'clone',
        put: false
    },
    sort: false,
    ghostClass: "droppable-area",
});

// Create shopping cart list
var cart_list_element = document.getElementById("cart-list");
var cart_list = new Sortable(cart_list_element, {
    group: {
        name: "fruit_group",
        pull: true,
        put: true
    },
});

有什么想法吗? Here is a working JSFiddle.

最佳答案

这就是 GhostClass 设置的作用: 当拖动对象时,sortablejs 会创建一个占位符,如果您立即放开该项目,该项目将被删除。该占位符将获取为它设置的 GhostClass 值的类。

就您而言:

  • 删除 panel-div 中的“droppable-area”类名称。
  • 创建CSS:.droppable-area { border: 1px Solid black; }

现在,您将看到一个虚线框,表示如果停止拖动,项目将最终到达的位置。

关于javascript - 在 Sortable.js 中拖放列表 : How to set a different drop area than a Sortable list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27958883/

相关文章:

javascript - 我想在特定时间后加载另一个 HTML 页面

javascript - 如何通过javascript在两个不同域之间进行通信

javascript - 在 Photoshop 中使用 Javascript 获取文件夹的属性

javascript - 在页面 Javascript 中搜索 - 一个结果错误

javascript - 服务器发送的事件在 Firefox 中一次后不起作用

javascript - HTML5 视频作为背景在窗口调整大小时留下 HTML 工件

javascript - 谷歌图表错误,没有消息或错误 ID

Javascript - 如何用空格替换字符串中的所有+

html - 你如何消除内部 div 和容器 div 之间的差距?

javascript - 再次单击时 Bootstrap 警报不起作用