Клонирование элементов в Dom7 позволяет создавать точные копии выбранных узлов DOM вместе с их содержимым, атрибутами и событиями. Это особенно полезно при динамическом формировании интерфейса, повторении шаблонов или создании интерактивных компонентов.
.clone()Метод .clone() возвращает новую коллекцию элементов,
являющихся копиями исходных. Синтаксис:
var clonedElements = Dom7('селектор').clone([withDataAndEvents = false]);
Параметры:
withDataAndEvents (boolean, по умолчанию
false) — если true, копируются также данные и
события, привязанные к элементам. Если false, клонируются
только сами узлы DOM без связанных обработчиков событий.Пример базового клонирования:
var original = Dom7('.item');
var clone = original.clone();
Dom7('.container').append(clone);
В этом примере элемент с классом .item клонируется и
добавляется в контейнер. При этом обработчики событий на клонированном
элементе не сохраняются.
Для сохранения всех событий и данных используется аргумент
true:
var original = Dom7('.button');
original.on('click', function() {
console.log('Кнопка нажата');
});
var clone = original.clone(true);
Dom7('.buttons-wrapper').append(clone);
Теперь клон будет реагировать на клики так же, как оригинал.
Глубокое клонирование Метод
.clone() клонирует не только сам элемент, но и все его
дочерние узлы. Это важно при работе с составными компонентами, где
структура вложенности может быть сложной.
События и данные Dom7 хранит события и данные
внутри собственной структуры. При клонировании с true Dom7
автоматически копирует все привязки событий и данные, что обеспечивает
идентичное поведение клона.
Манипуляции после клонирования После создания
клона его можно добавлять в DOM с помощью методов
.append(), .prepend(), .after(),
.before() и других стандартных методов Dom7:
var clone = Dom7('.card').clone(true);
Dom7('.cards-container').prepend(clone);
В данном случае клон добавляется в начало контейнера.
Динамические списки Клонирование позволяет быстро создавать повторяющиеся элементы списка без повторного построения HTML вручную.
Шаблоны карточек и компонентов Используется для создания нескольких копий одной карточки продукта или блока интерфейса.
События на клонированных элементах С сохранением событий можно создавать полностью функциональные дубликаты интерактивных элементов, например кнопок, полей ввода или слайдеров.
clone() без параметров.Dom7 .clone() фактически оборачивает нативный метод
Node.cloneNode(), расширяя его возможностями по сохранению
событий и данных:
var original = document.querySelector('.item');
var clone = original.cloneNode(true); // true — глубокое клонирование
document.querySelector('.container').appendChild(clone);
Dom7 упрощает работу с коллекциями элементов и объединяет клонирование с управлением событиями и данными, что делает код более лаконичным и удобным для динамических интерфейсов.