jQuery перетаскиваемый + сортируемый:странное поведение смещения мыши
-
12-09-2019 - |
Вопрос
У меня есть перетаскиваемый список < li > элементы, которые я могу перетащить в другой пустой < ul > элемент.Если я перетащу первый < li > элемент перетаскиваемого оригинала < ul > все работает нормально...
Проблема:
...но когда я перетаскиваю любой другой < li > элемент этого списка "помощник" удаляется от указателя мыши, как только я пересекаю границу получаемой сортируемой таблицы < ul >.Точнее, он перемещается в начало списка.
Кто-нибудь видел это и знает решение?Ну, моя проблема в том, что я просто использую jquery, не очень глубоко вникая в него и никогда по-настоящему глубоко не использовал javascript.
Дополнительная информация о проблеме:
Мой код jQuery:
$(document).ready(function() {
$('#roleList > li').draggable({
connectToSortable: '#roleDrop',
containment: '#container',
revert: 'invalid'
});
$('#roleDrop').sortable({
cursor: 'move',
containment: '#container',
revert: true,
update: function() {
var order = $('#roleDrop').sortable('serialize');
$.ajax({
type: 'POST',
url: '".$postUrl."',
dataType: 'html',
data: order
});
}
});
$('#roleList').disableSelection();
});
В то время как #roleList и #roleDrop являются вышеупомянутыми неупорядоченными списками, #container - это таблица.
Теперь скриншот того, что происходит.
Я начинаю перетаскивать элемент:
Когда я пересекаю границу второго < ul > помощник вскакивает.
Если вам тоже нужна разметка xhtml, пожалуйста, скажите мне.
Решение
Попробуйте добавить helper: 'clone'
к вашему .draggable
Опции:
$('#roleList > li').draggable({
helper: 'clone',
connectToSortable: '#roleDrop',
containment: '#container',
revert: 'invalid'
});
Согласно документация по jQuery, вы должны установить этот параметр при подключении перетаскиваемого объекта к сортируемому.
Хотя это дает другой интерфейс (перетаскиваемые элементы клонируются, а не перемещаются), это, по крайней мере, временное решение известной проблемы, о которой говорится в документации.Дополнительная обработка событий может привести к удалению исходного элемента из #roleList
во время #roleDrop
обновить обратный вызов.