【问题标题】:Sortable and draggable behavior on list items列表项的可排序和可拖动行为
【发布时间】:2013-10-26 00:22:23
【问题描述】:

我来这里是因为我在使用 jQuery UI 的可排序/可拖动/可放置的东西做某事时遇到了麻烦。

我正在尝试执行 iTunes 播放列表之类的操作(当您更改曲目列表的顺序或将曲目移动到另一个播放列表时) 这个想法是我有一个曲目列表(在 a 中),我希望这个列表是可排序的,这很容易。事实上,我还有第二个(播放列表)列表,我希望将曲目拖到那些“播放列表”项目中以执行某些操作。

这是一个例子:http://jsfiddle.net/MSGhf/1/

(可排序的工作完全符合我的要求,黑线只是<div class="plholder"></div>

但是当您开始拖动轨道时,可排序可以正常工作。但是,当您将曲目移出可拖动曲目时,新顺序将保留,因此在播放列表中拖动曲目也可能会更改曲目列表顺序,这是一个问题。

所以我不知道如何在轨道离开时阻止可排序。

如果你有任何想法:)

谢谢!

【问题讨论】:

  • 嗯。如果我正确理解您的要求,Firefox 已经在以这种方式工作。哪个浏览器似乎让您感到悲伤?

标签: javascript jquery jquery-ui jquery-ui-sortable jquery-ui-droppable


【解决方案1】:

啊,好的,我知道发生了什么。这是您想要做的(工作示例,此处:http://jsfiddle.net/mori57/L3CF8/1/

    $(".droppable").droppable({
        tolerance: "pointer",
        drop:function(){
            // You need to tell your sortable to cancel 
            // the last drag/drop interaction
            $("ul").sortable("cancel");
            alert("Do something on drop ...");   
        }
    });

【讨论】:

  • 是的!这正是我想要的!坦克很多:) 如果我想在用户将轨道从可排序中释放时取消可排序怎么办?
  • 我一直在看,它似乎有点棘手。我认为你必须做的是跟踪鼠标位置,看看它是否仍然在你原来的可排序对象上,并使用 out: 事件来测试你是否仍然在原来的可排序对象上,如果它在外面则取消。然而,我还没有确定具体细节,也没有时间深入探讨,但你可以在这里看到我试图做的事情:jsfiddle.net/mori57/L3CF8/5
  • 好的,我完全明白了,这正是我的想法,但我不知道如何开始。这肯定会有很大帮助,现在我想我可以自己完成了。非常感谢 mori57,你让我很开心 :)
猜你喜欢
  • 1970-01-01
  • 2018-04-06
  • 2011-12-10
  • 2015-12-17
  • 1970-01-01
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
相关资源
最近更新 更多