В библиотеке jQuery замена элементов и их содержимого является одной из ключевых возможностей для динамического управления DOM. jQuery предоставляет удобные методы, позволяющие не только изменять текст и HTML внутри элементов, но и полностью заменять элементы, их атрибуты и узлы, сохраняя при этом удобство работы с цепочками вызовов.
Методы .html() и .text() позволяют изменять
содержимое выбранных элементов.
.html(content) Заменяет
HTML-контент элемента. Принимает строку с HTML-кодом или функцию для
динамического формирования содержимого.
$('#container').html('<p>Новый контент</p>');
Если передать функцию, она получает индекс элемента и текущий HTML:
$('#list li').html(function(index, oldHtml) {
return `<strong>${oldHtml}</strong>`;
});.text(content) Заменяет текстовое
содержимое элемента без интерпретации HTML.
$('#message').text('Привет, мир!');Эти методы полезны, когда нужно быстро обновить текст или структуру внутри элемента, не трогая сам узел.
Для полной замены элементов используются методы
.replaceWith() и .replaceAll().
.replaceWith(newContent) Заменяет
каждый выбранный элемент на указанный контент. Контент может быть
строкой HTML, jQuery-объектом или функцией.
$('.old-item').replaceWith('<div class="new-item">Новый элемент</div>');
Использование функции позволяет модифицировать каждый элемент индивидуально:
$('.old-item').replaceWith(function() {
return `<div class="new-item">Элемент ${$(this).text()}</div>`;
});.replaceAll(target) Действует
обратным образом: выбранный элемент заменяет указанный целевой
элемент.
$('<div class="new-item">Новый элемент</div>').replaceAll('.old-item');Эти методы полностью удаляют исходные элементы из DOM и заменяют их новыми узлами, сохраняя корректность дерева документа.
Методы .empty() и .detach() позволяют
удалять содержимое, оставляя сам элемент на месте.
.empty() Удаляет всех потомков
выбранного элемента, оставляя сам контейнер.
$('#container').empty();
Применимо для динамического очищения секций страницы перед вставкой нового контента.
.detach() Удаляет элемент из DOM,
но сохраняет все данные и события, связанные с ним. Это полезно для
временного перемещения элементов.
var item = $('#item').detach();
$('#new-container').append(item);Метод .remove() похож на .detach(), но
полностью уничтожает все привязанные события и данные.
Чтобы заменить элемент, сохранив его события и обработчики,
применяется комбинация .clone() и
.replaceWith().
var oldElement = $('#clickable');
var cloned = oldElement.clone(true); // true сохраняет события
cloned.text('Новый текст');
oldElement.replaceWith(cloned);
Метод .clone(true) обеспечивает глубокое клонирование с
копированием всех обработчиков событий, что критично при динамическом
обновлении интерфейса без потери интерактивности.
Хотя это не замена всего узла, управление атрибутами и свойствами часто используется вместе с заменой содержимого:
.attr(name, value) и
.prop(name, value) Позволяют менять
атрибуты и свойства элементов, что влияет на их поведение и
отображение.
$('#link').attr('href', 'https://example.com');
$('#checkbox').prop('checked', true);.removeAttr(name) Удаляет атрибуты,
изменяя структуру элемента без удаления самого узла.
$('#link').removeAttr('target');Методы .html(), .text(),
.replaceWith() и другие позволяют передавать функцию вместо
статического контента. Это особенно полезно, когда новая структура
зависит от текущего состояния элемента или его индекса:
$('li').replaceWith(function(index, oldHtml) {
return `<li class="updated">Элемент ${index}: ${oldHtml}</li>`;
});
Такой подход делает код более гибким и позволяет минимизировать дублирование при массовой замене элементов.
.html() или .text()..clone(true) + .replaceWith()..detach()..attr() и
.prop() вместо прямой модификации DOM через
setAttribute или element.property, чтобы
сохранить совместимость с цепочками jQuery.Эффективная работа с методами замены в jQuery позволяет создавать динамичные интерфейсы, где структура страницы может меняться без потери интерактивности, а код остаётся компактным и читаемым.