SortableJS предоставляет широкий набор событий, позволяющих отслеживать взаимодействие пользователя с элементами списка и управлять поведением при перетаскивании. Все события можно разделить на несколько категорий: события перетаскивания, изменения порядка, а также вспомогательные события, связанные с началом и завершением действий.
choose Происходит в момент выбора
элемента для перетаскивания. Срабатывает перед любыми визуальными
изменениями, позволяет определить, какой элемент станет активным. Объект
события содержит:
evt.item — выбранный элемент.evt.from — контейнер, из которого выбран элемент.start Срабатывает сразу после начала
перетаскивания. В этот момент элемент визуально перемещается вместе с
курсором. Основные свойства:
evt.item — элемент, который начали перетаскивать.evt.from — контейнер, из которого начинается
перемещение.evt.oldIndex — исходный индекс элемента в списке.move Происходит во время перемещения
элемента по контейнеру. Возвращаемое значение события позволяет
разрешить или запретить перемещение:
true — перемещение разрешено.false — перемещение запрещено. Ключевые свойства:evt.related — элемент, относительно которого происходит
перемещение.evt.willInsertAfter — логическое значение, указывающее,
будет ли элемент вставлен после related.end Срабатывает после завершения
перетаскивания, когда элемент возвращается в DOM на новое место.
Свойства события:
evt.item — перемещённый элемент.evt.from и evt.to — исходный и конечный
контейнеры.evt.oldIndex и evt.newIndex — исходный и
новый индексы элемента.update Происходит, если элемент был
перемещён внутри контейнера и список изменил порядок элементов.
Позволяет синхронизировать данные с новым порядком DOM. Основные
свойства:
evt.item — перемещённый элемент.evt.from — контейнер до изменения.evt.oldIndex — индекс до изменения.evt.newIndex — индекс после перемещения.sort Срабатывает после любого изменения
порядка элементов в контейнере, включая перемещение элементов между
контейнерами. Отличие от update в том, что
sort вызывается всегда при сортировке, даже если элемент
остался в том же контейнере.
remove Происходит, когда элемент
перемещается из одного контейнера в другой. Свойства:
evt.item — перемещаемый элемент.evt.from — исходный контейнер.evt.oldIndex — индекс элемента до удаления.add Срабатывает, когда элемент был
добавлен в контейнер, например, после переноса из другого контейнера.
Свойства:
evt.item — добавленный элемент.evt.to — контейнер, куда вставлен элемент.evt.newIndex — индекс элемента после вставки.clone Срабатывает при создании клона
элемента, если используется опция clone. Позволяет
выполнять дополнительные действия с клонированным элементом.
filter Срабатывает, если элемент, к
которому применён фильтр, был выбран для перетаскивания. Позволяет
предотвратить его перемещение.
unchoose Происходит, когда элемент был
снят с выбора, но перетаскивание не началось.
change Обновляется при любом изменении
состояния сортировки, в том числе при перетаскивании, добавлении или
удалении элемента. Используется для синхронизации внешних данных с
текущим состоянием списка.
dragover и dragenter
События, связанные с перемещением элемента над контейнером. Позволяют
управлять визуальными эффектами и проверять допустимость
перемещения.
drop Происходит после того, как элемент
был отпущен над контейнером. В основном используется для интеграции с
другими библиотеками и пользовательскими эффектами.
cancel Срабатывает, если перетаскивание
было отменено пользователем или программно через метод
sortable.cancel().
evt, содержащий ссылки на
элементы и контейнеры, а также информацию о позициях.move для контроля над перемещением и update
для синхронизации данных.update, sort, add,
remove), и вспомогательные (choose,
start, end, move,
clone, filter).Использование полного набора событий SortableJS позволяет создавать сложные интерфейсы с множеством взаимодействующих списков, гибко управлять элементами и поддерживать актуальное состояние данных без конфликтов и ошибок при перетаскивании.