Umbrella JS предоставляет удобные методы для работы с DOM, включая
замену элементов и управление их содержимым. Основные функции для замены
связаны с методами .replaceWith(), .html(),
.append(), .prepend() и их вариациями. Эти
методы позволяют динамически изменять структуру страницы без прямой
работы с нативным DOM через document.createElement или
innerHTML.
.replaceWith()Метод .replaceWith() полностью заменяет выбранные
элементы новым содержимым. В качестве аргумента можно передавать
HTML-строку, DOM-элемент или
объект Umbrella JS.
u('.old-element').replaceWith('<div class="new-element">Новый контент</div>');
let newElem = document.createElement('p');
newElem.textContent = 'Текст нового параграфа';
u('.old-element').replaceWith(newElem);
При замене нескольких элементов каждый выбранный элемент заменяется на одинаковый контент, если передан HTML или Umbrella-объект. Если передан DOM-элемент, он перемещается только один раз, поэтому замена нескольких элементов потребует клонирования.
let newElem = document.createElement('div');
newElem.textContent = 'Контент';
u('.items').each(function(el) {
u(el).replaceWith(newElem.cloneNode(true));
});
.html()Метод .html() позволяет полностью заменить
внутренний HTML выбранных элементов. Это удобный способ
изменить содержимое без удаления самого элемента из DOM.
u('.container').html('<span>Новый контент</span>');
Особенности:
.append() и .prepend()Методы .append() и .prepend() добавляют
новые элементы внутрь выбранного элемента,
соответственно в конец или начало содержимого.
u('.list').append('<li>Новый элемент</li>');
u('.list').prepend('<li>Первый элемент</li>');
Можно передавать:
При добавлении DOM-элемента он перемещается, а не
клонируется, если нужно вставить несколько копий — используется
cloneNode(true).
let item = document.createElement('li');
item.textContent = 'Элемент';
u('.list').append(item.cloneNode(true));
u('.list').append(item.cloneNode(true));
Umbrella JS предоставляет методы .before() и
.after() для вставки элементов вокруг выбранного
элемента, не затрагивая его содержимое.
u('.item').before('<div class="before">До элемента</div>');
u('.item').after('<div class="after">После элемента</div>');
Разница с .append() и .prepend():
.before() и .after() вставляют элементы
на том же уровне DOM, где находится выбранный
элемент..append() и .prepend() вставляют элементы
внутрь выбранного элемента.Если требуется заменить или добавить элементы многократно, особенно с DOM-узлами, важно использовать клонирование:
let template = document.createElement('div');
template.textContent = 'Шаблон';
u('.placeholders').each(function(el) {
u(el).replaceWith(template.cloneNode(true));
});
Это предотвращает удаление оригинального элемента при первой вставке и позволяет корректно обновить несколько узлов.
Все методы Umbrella JS работают с коллекциями элементов, что позволяет выполнять замену и вставку в цикле за одну команду. Если передается HTML-строка или Umbrella-объект, он дублируется для всех элементов коллекции:
u('.boxes').replaceWith('<div class="new-box">Новый блок</div>');
Каждый .boxes будет заменен на отдельный новый
блок. При использовании DOM-элемента нужно заранее клонировать,
как показано выше.
.replaceWith() с HTML-строкой или Umbrella-объектом..html() безопаснее для изменения внутреннего
содержимого, если нет необходимости заменять сам элемент..before() и .after() удобны для
вставки соседних блоков без разрушения текущей структуры.Эти методы делают Umbrella JS гибким инструментом для замены элементов и динамического управления DOM, позволяя писать лаконичный и читаемый код без лишней работы с низкоуровневым API.