jquery ui 拖放+可排序

标签 jquery jquery-ui draggable jquery-ui-sortable

我也在尝试使拖放可排序。我可以从 div 1 拖动到 div 2,从 div 2 拖动到 div 1,但因为我使用克隆,所以无法获得可排序的工作。

有什么想法吗?

$(document).ready(function() {

    $("#qselected").sortable();
    $("#qselected").disableSelection();

    $(".qitem").draggable({
        containment : "#container",
        helper : 'clone',
        revert : 'invalid'
    });

    $("#qselected, #qlist").droppable({
        hoverClass : 'ui-state-highlight',
        drop : function(ev, ui) {
            $(ui.draggable).clone().appendTo(this);
            $(ui.draggable).remove();

            $(".qitem").draggable({
                containment : "#container",
                helper : 'clone',
                revert : 'invalid'
            });
        }
    });
});

现场演示:http://jsfiddle.net/6xXPq/4/

最佳答案

要实现此功能,您不能再次拖动拖放框中的项目,因为您不知道它是否正在尝试排序或拖动。

这是工作代码: Example JSFiddle

$(document).ready(function() {
    $("#qselected").sortable();
    $("#qselected").disableSelection();

    $(".qitem").draggable({
        containment : "#container",
        helper : 'clone',
        revert : 'invalid'
    });

    $("#qselected, #qlist").droppable({
        hoverClass : 'ui-state-highlight',
        accept: ":not(.ui-sortable-helper)",
        drop : function(ev, ui) {
            $(ui.draggable).clone().appendTo(this);
            $(ui.draggable).remove();
        }
    });
});

要使其正常工作,您不能允许放置处理程序接受正在排序的项目,为此,我们将 accept 过滤器添加到可放置处理程序:

accept: ":not(.ui-sortable-helper)",

现在这意味着您可以将项目从底部框拖到顶部,然后对顶部框进行排序。但是,您无法再将项目拖动到顶部框之外。

您将必须设计一种新方法来删除它们(可以使用标记来删除顶部框的可拖动/可排序功能之间的切换来完成)

关于jquery ui 拖放+可排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20263602/

相关文章:

javascript - 从后面的代码触发 javascript;按钮触发 js 代码,RegisterStartupScript 不会

javascript - 在 Jquery 的列表中删除没有元素的列表

javascript - 如何在删除内容后键入文本

javascript - 如何在 jquery 中拆分包含 'AND' 和/或 'OR' 参数的查询?

css - AJAX 和 CSS 的 TinyMCE 和 CKEditor 问题

javascript - 为什么 css break(不占用 li 的高度)?

jquery - 如何使用 Jquery 动态选择特定链接?

javascript - 如何将匿名函数转换为普通函数?

jQuery Draggable - 如何访问坐标

javascript - 将可拖动事件委托(delegate)给父元素