Dom7 — это лёгкая и быстрая библиотека для работы с DOM, созданная специально для Framework7. Она предоставляет удобный синтаксис, аналогичный jQuery, но с меньшим весом и оптимизацией под мобильные приложения. Встроена в Framework7 по умолчанию, что позволяет использовать её методы без дополнительного подключения.
Для получения ссылки на объект Dom7 используется функция
$:
var $$ = Dom7;
Переменная $$ является общепринятой в Framework7 и
позволяет манипулировать элементами страницы.
Выбор по селекторам реализуется аналогично jQuery:
$$('.button') // все элементы с классом button
$$('#app') // элемент с id app
$$('div[data-role]') // все div с атрибутом data-role
Особенности:
Примеры манипуляций:
$$('.button').addClass('active');
$$('.button').removeClass('disabled');
$$('.list-item').css('color', 'red');
Метод .css() позволяет задать один или несколько
CSS-свойств сразу:
$$('.list-item').css({
'background-color': 'yellow',
'font-weight': 'bold'
});
Dom7 предоставляет удобный API для обработки событий:
$$('.button').on('click', function (e) {
console.log('Кнопка нажата', e.target);
});
Методы событий:
.on(eventName, handler) — добавление обработчика.off(eventName, handler) — удаление обработчика.once(eventName, handler) — однократный вызов
обработчикаМожно использовать делегирование событий:
$$('body').on('click', '.dynamic-button', function () {
console.log('Динамическая кнопка нажата');
});
Добавление и удаление элементов:
$$('.list').append('Новый элемент ');
$$('.list').prepend('Первый элемент ');
$$('.list-item:last-child').remove();
Изменение атрибутов и данных:
$$('.link').attr('href', 'https://example.com');
var href = $$('.link').attr('href');
$$('.item').data('id', 123);
var id = $$('.item').data('id');
Методы .attr() и .data() позволяют как
получать, так и задавать значения.
Манипуляции с текстом и HTML:
$$('.content').text('Новый текст');
$$('.content').html('Жирный текст');
Dom7 интегрируется с CSS-анимациями через методы
.transition() и .transform():
$$('.box').transition(500).transform('translateX(100px)');
Методы позволяют задавать время анимации и трансформации, что удобно для динамических интерфейсов Framework7.
Dom7 поддерживает методы для перемещения по дереву элементов:
.parent() — родительский элемент.parents(selector) — ближайшие родительские элементы по
селектору.children(selector) — дочерние элементы.siblings(selector) — соседние элементы.find(selector) — поиск внутри выбранных элементовПример:
$$('.active').parent().addClass('highlight');
$$('.item').find('.label').css('color', 'blue');
Dom7 предоставляет удобные методы для работы с формами и их элементами:
var value = $$('#my-input').val(); // получение значения
$$('#my-input').val('Новое значение'); // установка значения
Для чекбоксов и радиокнопок:
$$('input[type=checkbox]').prop('checked', true);
var checked = $$('input[type=checkbox]').prop('checked');
Метод .prop() управляет свойствами элементов,
.val() — их значениями.
Dom7 тесно связана с компонентами Framework7. Например, для обновления списка после динамического добавления элементов:
var app = new Framework7({/* параметры */});
$$('.add-item').on('click', function () {
$$('.list').append('Новый элемент ');
app.virtualList.refresh(); // обновление виртуального списка
});
С Dom7 можно легко управлять модальными окнами, панелями и вкладками Framework7:
$$('.open-popup').on('click', function () {
app.popup.open('.my-popup');
});
Использование Dom7 обеспечивает короткий и читаемый код, без необходимости писать сложные нативные селекторы или циклы.
Framework7 предоставляет события жестов, которые удобно обрабатывать через Dom7:
$$('.swipe-area').on('swipeleft', function () {
console.log('Свайп влево выполнен');
});
$$('.swipe-area').on('swiperight', function () {
console.log('Свайп вправо выполнен');
});
Это упрощает создание интерактивных интерфейсов на мобильных устройствах.
Хотя Dom7 ориентирована на DOM, её методы легко использовать с асинхронными данными:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
data.forEach(item => {
$$('.list').append('' + item.name + ' ');
});
});
Dom7 отлично сочетается с динамическим наполнением контента и обновлением интерфейса.
var $button = $$('.button');
$button.addClass('active');
$button.on('click', doSomething);
Это снижает нагрузку на DOM и улучшает отзывчивость интерфейса.
Dom7 поддерживает расширение прототипа для создания собственных методов:
Dom7.prototype.highlight = function () {
this.css('background-color', 'yellow');
return this;
};
$$('.item').highlight().css('color', 'red');
Это позволяет создавать кастомные функции, сохраняя цепочку методов.