У меня есть 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
для .droppable()
вызывается дважды.Я думаю, что это как-то связано с тем, что #item-holder
можно сортировать.Я хочу, чтобы он запускался только тогда, когда я помещаю элемент в список и знаю только о event
и ui
этого элемента в обратном вызове. - Мне также нужна функциональность, где по умолчанию
items-holder
не сортируется.Единственный раз, когда он становится сортируемым, это когда вы перетаскиваете элемент над ним.Поэтому я не могу отсортировать список по умолчанию, но если я перетаскиваю на него элемент, я могу выбрать, куда поместить этот элемент в списке (т. Е. Список теперь можно сортировать), и после его удаления список становится несортируемым.снова.
РЕДАКТИРОВАТЬ: Я понял # 2, мне нужно было привязать mousedown
к перетаскиваемым элементам, что позволяет сортировать, а затем отключает его на mouseup
.По-прежнему возникают проблемы с # 1, кажется, что некоторые из событий sortable
запускают обратный вызов drop
, когда я бросаю предмет или зависаю из держателя предмета.