Cash — это легковесная библиотека, реализующая основные возможности jQuery с упором на производительность и компактность. Перемещение элементов в Cash строится на манипуляциях с DOM-структурой: изменение положения элементов в дереве, вставка новых элементов относительно существующих, клонирование и удаление. Все операции осуществляются через удобный цепочный интерфейс.
Cash предоставляет несколько методов для вставки элементов в DOM:
append() — добавляет содержимое в
конец выбранного элемента.
const div = $('<div>Новый элемент</div>');
$('#container').append(div);
В этом примере <div> будет добавлен
внутрь элемента с идентификатором
container после всех его дочерних элементов.
prepend() — вставляет содержимое в
начало выбранного элемента.
$('#container').prepend('<p>Первый абзац</p>');
Новый абзац окажется перед всеми остальными дочерними элементами контейнера.
after() — добавляет элемент
сразу после выбранного.
$('<span>Примечание</span>').insertAfter('#target');
Этот способ полезен, когда необходимо разместить новый узел рядом с существующим, не изменяя его содержимое.
before() — вставляет элемент
сразу перед выбранным.
$('<span>Вставка перед</span>').insertBefore('#target');Каждый из этих методов может принимать строку HTML, DOM-элемент или другой Cash-объект. Методы возвращают Cash-коллекцию, что позволяет использовать цепочки вызовов.
Для перемещения уже существующих элементов используются те же методы, что и для вставки, с ключевым моментом: Cash автоматически удаляет элемент из текущего положения, если он вставляется в новое место.
Пример:
const item = $('#item');
$('#new-container').append(item);
Элемент #item будет удалён из старого контейнера и
добавлен в #new-container. Это изменение структуры
DOM без дублирования.
Иногда требуется сохранить оригинал и создать его копию. Для этого
используется метод clone():
const clone = $('#original').clone();
$('#container').append(clone);
По умолчанию clone() создаёт копию только самого
элемента. Чтобы скопировать всё содержимое, включая
события, можно передать параметр true:
const cloneWithEvents = $('#original').clone(true);
remove() — удаляет элементы из DOM
полностью.
$('.old-item').remove();detach() — аналогично
remove(), но сохраняет связанные события и
данные для возможного повторного использования.
const saved = $('.old-item').detach();
$('#new-container').append(saved);Использование detach() удобно при временном переносе
элементов или при динамическом перестроении интерфейса без потери
привязанных обработчиков.
Cash позволяет легко управлять позиционированием через методы
appendTo() и
prependTo(), которые действуют как
зеркальные отражения append() и prepend():
$('<div>Элемент</div>').appendTo('#container');
Этот вызов создаёт новый <div> и добавляет его в
#container.
Также доступны методы children(),
parent(),
siblings(), которые помогают
ориентироваться в структуре DOM при перемещении элементов:
$('#item').parent().append('<p>Новый элемент у родителя</p>');
Все методы вставки и перемещения возвращают Cash-объект, что позволяет создавать цепочки вызовов для сложных операций:
$('#item')
.detach()
.appendTo('#new-container')
.after('<p>Соседний элемент</p>');
Эта цепочка последовательно:
#item из DOM, сохраняя события.Хотя Cash в первую очередь работает с DOM, перемещая элементы, часто нужно учитывать визуальное отображение:
position: absolute).CSS) сохраняются при
клонировании.detach().const item = $('#floating');
item.detach().appendTo('#new-container').css({
top: '50px',
left: '100px'
});
append() и prepend().after() и before().append() или prepend()
с существующим узлом.clone(true).detach().Эти инструменты позволяют эффективно управлять DOM-структурой и создавать динамические интерфейсы с минимальной нагрузкой и компактным кодом.