Dom7 — это легковесная библиотека для работы с DOM, часто
используемая вместе с фреймворком Framework7, но она полностью автономна
и предоставляет удобный синтаксис для манипуляций с элементами. Одним из
ключевых аспектов является возможность динамического создания
элементов, что позволяет строить интерфейсы без прямого
использования document.createElement и
appendChild.
Для создания элемента в Dom7 используется функция $,
аналогичная селектору jQuery. Основная форма создания нового
элемента:
var newDiv = $('<div></div>');
или с содержимым:
var newDiv = $('<div>Привет, мир!</div>');
В этом случае создается объект Dom7, содержащий новый элемент
<div>. Dom7 возвращает массивоподобный
объект, что позволяет сразу применять методы манипуляции, такие
как .append(), .prepend(),
.addClass().
Для задания атрибутов при создании можно использовать метод
.attr():
var button = $('<button>Клик</button>');
button.attr('type', 'button');
button.attr('id', 'myButton');
button.addClass('btn btn-primary');
Метод .addClass() поддерживает передачу нескольких
классов через пробел. Также доступен метод .removeClass()
для удаления, .toggleClass() для переключения классов.
Созданные элементы можно вставлять в существующий DOM несколькими способами:
.append() — добавляет внутрь выбранного элемента в
конец:$('#container').append(newDiv);
.prepend() — вставляет внутрь в начало:$('#container').prepend(newDiv);
.before() — вставляет перед выбранным элементом:$('#container').before(newDiv);
.after() — вставляет после выбранного элемента:$('#container').after(newDiv);
Все методы позволяют добавлять как один элемент, так и коллекцию элементов.
Dom7 поддерживает создание элементов с вложенной структурой напрямую через HTML-строку:
var card = $(`
<div class="card">
<div class="card-header">Заголовок</div>
<div class="card-content">Содержимое карточки</div>
<div class="card-footer">Подвал</div>
</div>
`);
$('#cardsContainer').append(card);
Это позволяет создавать многоуровневые элементы без необходимости поэтапного создания каждого дочернего узла.
Метод .text() используется для задания или получения
текстового содержимого:
newDiv.text('Новый текст');
Метод .html() позволяет работать с HTML внутри
элемента:
newDiv.html('<span>Вложенный элемент</span>');
Использование этих методов безопаснее и удобнее, чем манипуляции
через innerHTML напрямую, так как Dom7 возвращает объект
для дальнейшей цепочки методов.
Для создания копий существующих элементов применяется метод
.clone():
var clone = newDiv.clone();
$('#container').append(clone);
Клонирование позволяет сохранять все атрибуты и классы, а также, при необходимости, привязывать новые события к клонированным элементам.
var list = $('<ul></ul>');
['Элемент 1', 'Элемент 2', 'Элемент 3'].forEach(function(item) {
list.append($('<li></li>').text(item));
});
$('#listContainer').append(list);
var form = $('<form></form>');
form.append($('<input type="text" placeholder="Имя">'));
form.append($('<input type="email" placeholder="Email">'));
form.append($('<button type="submit">Отправить</button>'));
$('#formContainer').append(form);
Эти подходы позволяют строить сложные интерфейсы динамически, полностью через Dom7, без ручного создания каждого узла.
$('<div></div>')
.addClass('box')
.attr('data-role', 'card')
.text('Контент')
.appendTo('#container');
Dom7 обеспечивает гибкую и лаконичную работу с созданием элементов, предоставляя методы для добавления атрибутов, классов, текста, HTML и вложенных структур, а также для вставки элементов в DOM в любом месте. Эти возможности делают библиотеку удобным инструментом для динамических интерфейсов в JavaScript.