Библиотека SortableJS предоставляет гибкие механизмы для управления сортируемыми списками. Одной из ключевых операций является удаление экземпляра Sortable и его повторное создание с изменёнными настройками. Это необходимо в ситуациях, когда требуется динамическая перестройка интерфейса или изменение поведения списка без перезагрузки страницы.
Каждый экземпляр Sortable имеет метод
destroy(), который полностью удаляет
привязку к DOM-элементу:
const sortable = new Sortable(listElement, {
animation: 150,
ghostClass: 'sortable-ghost'
});
// Полное уничтожение Sortable
sortable.destroy();
Особенности метода destroy:
sortable-ghost,
sortable-chosen, sortable-drag и другие).После вызова destroy() можно создать новый экземпляр с
изменёнными параметрами:
// Новый экземпляр с другими настройками
const newSortable = new Sortable(listElement, {
animation: 300,
handle: '.handle',
swapThreshold: 0.65
});
Ключевые моменты при пересоздании:
Можно изменить любые параметры, включая:
animation — длительность анимации перетаскивания.handle — элемент, за который пользователь может
захватывать элементы списка.filter и preventOnFilter — управление
недоступными для перетаскивания элементами.group — логика совместной сортировки между
списками.Новые обработчики событий можно привязать при
создании или через on():
newSortable.on('end', function(evt) {
console.log('Элемент перемещён:', evt.item);
});
destroy не влияет на порядок элементов в DOM. Если
требуется восстановить предыдущий порядок, можно сохранять его до
уничтожения экземпляра.destroy().let sortableInstance = new Sortable(listElement, {
animation: 150,
handle: '.drag-handle'
});
// Изменение конфигурации через destroy и пересоздание
function reinitializeSortable(newOptions) {
sortableInstance.destroy();
sortableInstance = new Sortable(listElement, {
...newOptions
});
}
// Пример вызова с новыми настройками
reinitializeSortable({
animation: 300,
handle: '.new-handle',
swapThreshold: 0.6
});
Такой подход позволяет полностью управлять поведением сортируемого списка в реальном времени, сохраняя контроль над всеми аспектами Drag-and-Drop.
Методы destroy() и пересоздания являются базовыми
инструментами динамической работы с SortableJS,
обеспечивая гибкость интерфейса и предотвращая накопление устаревших
обработчиков событий.