我有一个ul
可拖动的项目(#doc-editor-options ul li)
,一个用于放置这些项目的区域(#doc-editor-content)
以及一个ul
用于存放这些项目的区域(#items-holder)
,这是可排序的。这种拖放只是单向的,只能将列表中的项目拖放到持有人中。
$("#doc-editor-options ul li").draggable({
helper: 'clone',
connectToSortable: '#item-holder',
containment: $(".doc-editor")
});
$("#doc-editor-content").droppable({
drop: function(e, ui){
console.log('dropped');
}
});
$("#item-holder").sortable({
placeholder: 'placeholder-highlight',
cursor: 'pointer',
});
我有两个问题:
- 现在,当我从列表中拖动一个项目并将其放入另一个列表时,
drop
回调 for.droppable()
被调用两次。我认为这与#item-holder
可排序有关。我希望它仅在我将一个项目放入列表并且只知道该项目event
和ui
回调时才被触发。 - 我还需要默认情况下
items-holder
不可排序的功能。它变得可排序的唯一时间是当您将项目拖动并悬停在其上时。所以默认情况下我不能对列表进行排序,但是如果我将一个项目拖到它上面,我可以选择将该项目放在列表中的哪个位置(即列表现在是可排序的),一旦我放下它,列表就会变得不可排序再次。
编辑:我想出了#2,我需要绑定mousedown
到启用排序然后禁用它的可拖动项目mouseup
。#1 仍然存在问题,当我将项目放入或悬停在项目持有者之外时,似乎某些sortable
事件正在触发回调。drop