Библиотека Umbrella JS предоставляет удобный и
лаконичный способ работы с DOM, включая чтение и управление атрибутами
элементов. В основе лежит метод attr(),
который позволяет как получать значения атрибутов, так и задавать
их.
Для получения значения атрибута у одного или нескольких элементов используется вызов:
u('селектор').attr('имяАтрибута');
Если в выборке несколько элементов, метод возвращает значение атрибута первого элемента.
Пример:
const linkHref = u('a.my-link').attr('href');
console.log(linkHref); // "/home"
Здесь attr('href') вернул значение атрибута
href первого найденного элемента с классом
my-link.
Umbrella JS поддерживает получение нескольких атрибутов сразу, используя массив имен:
const attributes = u('img').attr(['src', 'alt']);
console.log(attributes); // { src: "image.png", alt: "Описание" }
Возвращается объект, где ключи соответствуют именам атрибутов, а
значения — их содержимому. Если атрибут отсутствует, его значение будет
undefined.
Для работы с атрибутами data-* можно использовать
стандартный синтаксис через attr() или через
dataset():
const userId = u('div.user').attr('data-id');
или
const userId = u('div.user').dataset('id');
Метод dataset() упрощает работу именно с
data-* и возвращает значение напрямую, без необходимости
указывать полный атрибут.
Когда выборка содержит несколько элементов, можно получить массив
значений атрибутов с помощью метода map():
const linkHrefs = u('a.nav-link').map(el => el.getAttribute('href'));
console.log(linkHrefs); // ["/home", "/about", "/contact"]
Это позволяет обрабатывать все элементы коллекции и использовать полученные значения для дальнейшей логики.
attr() вернёт undefined, а
dataset() — undefined для конкретного
ключа.checked, disabled, selected метод
attr() возвращает строковое значение "true"
или "false", если атрибут явно задан, или
null/undefined, если отсутствует.u('div').attr('data-role') вернёт значение
data-role любого элемента <div>.Сбор всех ссылок на странице:
const urls = u('a').map(link => link.getAttribute('href'));
console.log(urls);
Получение всех data-атрибутов для элементов списка:
const itemsData = u('li.item').map(item => u(item).dataset());
console.log(itemsData);
// [{id: "1", category: "books"}, {id: "2", category: "electronics"}]
Проверка состояния чекбокса:
const isChecked = u('input[type=checkbox]').attr('checked') === 'checked';
console.log(isChecked);
attr()
и prop() для чтенияХотя Umbrella JS в основном использует attr() для работы
с атрибутами, иногда удобно отличать атрибуты DOM от
свойств элементов. Например, у чекбоксов
checked:
const checkedAttr = u('input[type=checkbox]').attr('checked'); // "checked" или undefined
const checkedProp = u('input[type=checkbox]').prop('checked'); // true или false
prop() возвращает фактическое состояние элемента, в то
время как attr() — значение атрибута в HTML.
attr('имя') возвращает значение атрибута первого
элемента в выборке.attr(['имя1', 'имя2']) возвращает объект с
соответствующими значениями.dataset('ключ') упрощает работу с
data-*.map() для
получения всех значений.attr() от prop() важно для
boolean-атрибутов.Чтение атрибутов в Umbrella JS позволяет быстро получать необходимые данные с элементов страницы без лишнего кода, сохраняя лаконичность и читабельность.