【问题标题】:jquery-ui drag and drop across multiple divs with sortjquery-ui 拖放多个 div 并排序
【发布时间】:2015-03-12 00:57:30
【问题描述】:

我正在尝试创建一个 jquery 拖放解决方案,但我对如何实现以下目标有点迷茫。

  1. 允许将“.todo-task”拖放到 4 个“积压、待处理、进行中、已完成”的 div 容器中的任何一个中。

  2. 使用高亮助手显示任务在容器中的放置位置。

  3. 能够在容器中拖放以更改顺序。

我的第一个问题是我似乎无法正确激活拖动项目。

我已经用我目前拥有的代码创建了一个jsfiddle。感谢任何指导/帮助

这是我的 jquery 代码

 $(".task-container").contents().find(".todo-task").draggable({
    connectToSortable: ".ui-droppable",
    helper: function (event) {

    },
    iframeFix: true,
    // stop: makeSortable()
    stop: function (event, ui) {
      //  alert('stop');
    }
});   

$(".ui-droppable").sortable({
    placeholder: "ui-state-highlight",
    opacity: .5,
    //dropOnEmpty: true,
    helper: 'original',
    beforeStop: function (event, ui) {
     newItem = ui.item;
    },
    receive: function (event, ui) {

    },

}).disableSelection().droppable({
    over: ".ui-droppable",
    activeClass: 'highlight',
    drop: function (event, ui) {
        $(this).addClass("ui-state-highlight");

    }
})

【问题讨论】:

  • 确保可拖动元素不在其他 jquery-ui 可排序/可选择/可调整大小等容器中,因为这是在相同元素上混合 jquery-ui 功能的已知问题。有解决方案,但可能非常具体,具体取决于当前配置
  • 首先,在小提琴中,您应该包含所需的库。 jsfiddle 的侧边栏上有一个选项,可让您添加外部资源。

标签: jquery-ui drag-and-drop jquery-ui-sortable


【解决方案1】:

我不确定您在“禁用”样式 CSS 方面还试图实现什么,但我只是分叉和胡闹了一分钟:

jsfiddle

有一件事是我认为您的 jQuery 方法是多余的。为什么说:

$(".task-container").contents().find(".todo-task").draggable( ...etc.

当您可以轻松做到这一点时:

$(".todo-task").draggable( ...etc.

所以我清理了一点。

我做的另一件事是制作.task-container droppable

查看 jQuery API:droppable methods

这允许您在列之间进行排序和移动,但就像我提到的那样,这个修复似乎对您的 CSS 类方法表现得很奇怪。

【讨论】:

  • 谢谢您,您的解决方案运行良好 - 当我进一步开发解决方案时,它足以让我进一步调整...
  • 在多个 DIV 之间拖放的非常好的解决方案。非常感谢!
猜你喜欢
  • 2013-03-06
  • 2013-12-14
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多