Библиотека Cash предоставляет компактный и удобный API для работы с DOM, обеспечивая лёгкую альтернативу jQuery. Одним из ключевых аспектов взаимодействия с элементами является работа с атрибутами. Cash позволяет как считывать, так и изменять атрибуты элементов, используя лаконичные методы.
.attr()Метод .attr() является универсальным инструментом для
работы с атрибутами. Он поддерживает несколько режимов использования,
что делает его гибким и удобным.
Чтение атрибута
const element = cash('img#logo');
const src = element.attr('src');
console.log(src);
При вызове с одним аргументом — строкой, метод возвращает значение
указанного атрибута первого элемента в наборе. Если атрибут отсутствует,
возвращается undefined.
Установка атрибута
cash('a.download').attr('href', 'file.pdf');
В данном случае устанавливается атрибут href для всех
элементов, соответствующих селектору. Второй аргумент метода может быть
строкой, числом или функцией, возвращающей значение атрибута.
Использование функции для динамической установки
cash('img.thumbnail').attr('alt', function(index, currentValue) {
return `Изображение №${index + 1}`;
});
Функция принимает два параметра: index — порядковый
номер элемента в выборке, currentValue — текущее значение
атрибута. Возвращаемое значение присваивается атрибуту.
Установка нескольких атрибутов одновременно
cash('input[name="user"]').attr({
placeholder: 'Введите имя',
required: true,
maxlength: 50
});
При передаче объекта ключами становятся названия атрибутов, а значениями — соответствующие значения, которые будут установлены для всех элементов выборки.
.removeAttr()Удаление атрибута из элемента осуществляется с помощью метода
.removeAttr().
cash('input').removeAttr('disabled');
Метод принимает одну строку с именем атрибута или несколько имён через пробел:
cash('button').removeAttr('disabled aria-label');
После вызова метода указанные атрибуты удаляются у всех выбранных элементов.
.prop() и
отличия от .attr()В Cash также существует метод .prop() для работы с
свойствами DOM-элементов, что иногда вызывает путаницу
с атрибутами. Основное отличие:
attr работает с HTML-атрибутами, отражающими исходное
состояние элемента в DOM.prop работает с текущими свойствами элементов, которые
могут динамически изменяться скриптами.Примеры:
// Проверка состояния checkbox
const checked = cash('#agree').prop('checked');
// Установка свойства
cash('#agree').prop('checked', true);
Использование prop особенно важно для булевых свойств
(checked, disabled, selected),
где изменение атрибута не всегда отражает текущее состояние
элемента.
data-* атрибутовДля работы с data-* атрибутами Cash предоставляет метод
.data(), который упрощает доступ к пользовательским
данным.
// Чтение
const userId = cash('div.profile').data('user-id');
// Установка
cash('div.profile').data('role', 'admin');
Метод автоматически преобразует строки в соответствующие типы (числа,
булевы значения) и обеспечивает синхронизацию с HTML-атрибутами
data-*.
.attr()..prop() вместо .attr()..removeAttr() не влияет на свойства, поэтому для
снятия состояния checked или disabled лучше
использовать .prop().Работа с атрибутами через Cash позволяет писать компактный, читаемый
код, сохраняя высокую производительность при манипуляциях с DOM.
Гибкость методов .attr(), .prop() и
.data() обеспечивает удобный доступ как к статическим, так
и к динамическим свойствам элементов.