У меня есть пул элементов в списке перетаскивания, который подключен к сортируемому с помощью параметра connectToSortable. Теперь я хочу удалить некоторые элементы из этого списка сортировки и переместить их обратно в список перетаскивания. Что-то вроде отмены. Предположим, пользователь перемещает около 5 элементов в список сортировки и решает, что ему нужны только 4 элемента, и решает просто перетащить ненужный элемент из списка сортировки В список перетаскивания. Как мне это сделать БЕЗ добавления ссылки «удалить» в список сортировки. Большое спасибо. Для получения дополнительной информации см. http://the-stickman.com/web-development/javascript/jquery-dropping-items-from-a-draggable-list-to-a-sortable-list/
Справка Jquery: перетаскивание в Sortable, а затем обратно в перетаскивание
Ответы (2)
Этот пример пользовательского интерфейса jQuery похож на то, что вам нужно. Он имеет два связанных списка, и пользователь может перетаскивать элементы между ними.
Но я подозреваю, что ваш сценарий не соответствует примеру. Допустим, у вас есть список перетаскивания, UL с каждым LI, который можно перетаскивать и связывать с другим UL, сделанным сортируемым (см. эту ссылку для примера). Каждый раз, когда вы перетаскиваете что-то из списка перетаскивания, используется клон перетаскиваемого элемента. Используя событие «out», вы можете зарегистрировать, когда вы перетаскиваете элемент за пределы сортируемого списка, и если элемент все еще находится вне, когда срабатывает событие «stop», удалите его из сортируемого списка. Используя свойства ui.position и ui.offset сортируемого виджета, вы можете определить, был ли элемент перетащен в список перетаскивания, прежде чем он будет удален из сортируемого.
Надеюсь это поможет.
Я думаю, что самое простое решение - сделать ваш перетаскиваемый список также отбрасываемым и обработать это событие перетаскивания. У меня есть #priority_articles_list
для сортировки и li.article
для перетаскивания, они внутри #articles
. В самом простом случае вы можете просто вызвать ui.draggable.remove();
, это должно помочь.
$("#articles").droppable({
accept: '#priority_articles_list > li',
drop: function(ev, ui) {
draggable_id = "#" + ui.draggable.attr("id").replace("priority_", "");
$(draggable_id).removeClass("shouldnt_drag");
ui.draggable.remove();
if ($("#priority_articles_list").children("li").length == 1) {
$("#priority_articles p").show();
}
}
});