jQuery Dragable/ Droppable не падает, где курсор мыши
(JSFiddle внизу)
В разрабатываемом приложении пользователь может отобразить перетаскиваемые элементы jQuery UI из плоского списка в дерево, где конечные узлы являются объектами jQuery UI. Элементы из плоского списка могут отображаться один за другим, но пользователь также может использовать множественный выбор, чтобы захватить произвольное количество элементов и поместить их в одно и то же место.
Когда пользователь выбирает большое количество элементов, перетаскиваемый помощник становится довольно длинным. Это вызывает проблемы при попытке отбросить элементы на узле, который находится в нижней части дерева.
Поведение, за которым я следую, - это отбрасывать элементы на листовом узле (сбрасываемый), на котором в данный момент находится курсор мыши. Кажется, это работает во всех случаях, за исключением случаев, когда вы достигаете нижней части списка. Курсор переместится вниз, но перетаскиваемый объект останется там, где он есть (он не может идти дальше). Вместо того, чтобы опускать элемент перетаскивания при включенном курсоре мыши, перетаскиваемый объект будет опускаться в элемент перетаскивания, который находится ниже того места, где ожидается курсор мыши (на основе атрибута cursorAt), или, по крайней мере, так кажется.
Я пробовал несколько настроек и изменений, но я не могу справиться с этим поведением. Большинство решений, которые я нахожу, используя точку поиска к tolerance: "pointer"
установка на droppable, но я уже использую это, и это не решает проблему. Мой помощник клонирует перетаскиваемый объект и устанавливает на него "указатель-события: нет", но это тоже не имеет значения (я могу также удалить вспомогательную функцию, и поведение будет таким же).
Это ошибка? Есть ли способ это исправить? Помощь будет принята с благодарностью. Дайте мне знать, если нужна дополнительная информация. Спасибо!
JSFiddle, воспроизводящий проблему: http://jsfiddle.net/1odvbmah/4/
Изменить: Отказ от ответственности: JSFiddle это самый простой способ, которым я мог воспроизвести проблему. Поэтому некоторые вещи работают не совсем так, как в реальном случае. Я сунул капельницу на дно, чтобы ограничить перетаскивание. В реальном случае, список сбрасываемых объектов можно прокручивать, но перетаскиваемый элемент не может выходить за пределы этого списка. В результате поведение точно так же. Поэтому небольшое изменение CSS не является решением моей настоящей проблемы:)
Второе редактирование: изменение cursorAt
значение тоже не является решением. В реальном случае перетаскиваемый объект может стать выше, чем высота экрана, а древовидный элемент управления (со списком элементов) почти на всю высоту страницы.
1 ответ
Как оказалось, это действительно ошибка в пользовательском интерфейсе jQuery. Я не нашел его с тех пор, как искал ошибку в jQuery, но, очевидно, перетаскивание в пользовательском интерфейсе.
Ошибка недавно была исправлена. Исправление также решает мою проблему.