Dom7 — это легковесная библиотека для работы с DOM, используемая в основном в связке с фреймворком Framework7. Несмотря на компактность, Dom7 предоставляет гибкие инструменты для манипуляции элементами, событийной модели и проверки данных. Проверка типов является важной частью работы с Dom7, так как библиотека оперирует коллекциями элементов и позволяет безопасно применять методы только к корректным объектам.
Методы Dom7 возвращают коллекции элементов, даже если по селектору ничего не найдено. Для безопасной работы с этими коллекциями необходимо проверять их длину:
const items = Dom7('.item');
if (items.length > 0) {
// Элементы существуют, можно выполнять операции
items.addClass('active');
}
Ключевой момент: коллекция Dom7 всегда ведет себя
как массив, что позволяет применять к ней массивные методы и проверять
наличие элементов через length.
Dom7 предоставляет утилитарные функции для проверки типов данных, что важно при динамической работе с элементами или их атрибутами.
Dom7.isFunction(obj) — проверяет,
является ли объект функцией.Dom7.isArray(obj) — проверяет,
является ли объект массивом.Dom7.isObject(obj) — проверяет,
является ли объект объектом, но не массивом и не null.Dom7.isNode(obj) — проверяет, является
ли объект DOM-элементом.Dom7.isNodeList(obj) — проверяет,
является ли объект NodeList (результат querySelectorAll).Пример использования:
function handleElement(el) {
if (Dom7.isNode(el)) {
Dom7(el).addClass('highlight');
} else if (Dom7.isArray(el)) {
el.forEach(item => Dom7(item).addClass('highlight'));
}
}
Важно: такие проверки предотвращают ошибки при передаче некорректных объектов в методы Dom7.
Dom7 позволяет работать с несколькими элементами одновременно. Перед выполнением операций часто проверяют, что коллекция не пустая и содержит элементы нужного типа.
const links = Dom7('a.external');
if (links.length && Dom7.isNode(links[0])) {
links.each(link => {
Dom7(link).attr('target', '_blank');
});
}
Метод .each применим только к коллекциям Dom7. Проверка
типа первого элемента (links[0]) обеспечивает корректную
работу методов библиотеки.
Для работы с атрибутами Dom7 предоставляет методы
.attr() и .prop(). Проверка типов значений
атрибутов предотвращает некорректные операции:
const input = Dom7('#username');
const value = input.val();
if (typeof value === 'string' && value.length > 0) {
input.addClass('filled');
}
Особенности: val() всегда возвращает
строку, поэтому проверка типа string гарантирует, что
методы, предназначенные для строк, будут работать корректно.
При работе с событиями Dom7 позволяет привязывать и удалять
обработчики через .on() и .off(). Проверка
типа обработчика обязательна:
function clickHandler(e) {
console.log('Clicked', e.target);
}
const btn = Dom7('#submit');
if (Dom7.isFunction(clickHandler)) {
btn.on('click', clickHandler);
}
Если обработчик не является функцией, попытка привязки вызовет
ошибку. Проверка через Dom7.isFunction исключает такие
случаи.
Dom7 часто применяется в динамических интерфейсах, где элементы и данные могут появляться и исчезать. Для безопасной работы используют комбинированные проверки:
const items = Dom7('.menu-item');
if (items.length && Dom7.isNode(items[0])) {
items.each(item => {
const text = Dom7(item).text();
if (typeof text === 'string' && text.trim() !== '') {
Dom7(item).addClass('has-text');
}
});
}
Такой подход гарантирует, что операции будут выполнены только над корректными элементами и значениями.
Некоторые методы Dom7 автоматически проверяют типы аргументов. Например:
.addClass(className) и
.removeClass(className) проверяют, что
className — это строка..css(property, value) проверяет тип value
для корректного применения стилей..attr(name, value) проверяет имя атрибута как строку, а
значение допускает строку или null.Тем не менее, явные проверки с использованием
Dom7.isFunction, Dom7.isNode,
Dom7.isArray повышают надежность кода.
| Метод | Описание |
|---|---|
Dom7.isFunction(obj) |
Проверка функции |
Dom7.isArray(obj) |
Проверка массива |
Dom7.isObject(obj) |
Проверка объекта (не массив, не null) |
Dom7.isNode(obj) |
Проверка DOM-элемента |
Dom7.isNodeList(obj) |
Проверка NodeList (querySelectorAll) |
Эти методы позволяют строить безопасные и предсказуемые манипуляции с DOM, предотвращая ошибки типов и некорректное применение методов библиотеки.
Проверка типов в Dom7 — основа стабильной работы с динамическим DOM и коллекциями элементов, обеспечивающая гибкость при взаимодействии с различными объектами и данными.