Bliss.js предоставляет мощный инструмент для работы с DOM, включая возможность массового изменения атрибутов элементов. Работа с атрибутами через обычный DOM часто требует перебора элементов и написания циклов вручную. Bliss.js упрощает этот процесс, позволяя выполнять batch-операции с минимальным количеством кода.
Методы $$ и each позволяют выбирать группы
элементов и применить к ним операции одновременно:
$$('div.item').each(function(el) {
el.setAttribute('data-active', 'true');
});
Здесь:
$$('div.item') — выборка всех элементов с классом
item.each — метод итерации по коллекции.el.setAttribute('data-active', 'true') — установка
атрибута каждому элементу.Преимущество в том, что подобные операции работают с
целыми коллекциями без явного использования циклов for или
forEach.
attr для работы с несколькими атрибутамиBliss.js расширяет стандартный DOM и позволяет использовать метод
attr для установки, получения и удаления
атрибутов.
Установка одного атрибута:
$('button').attr('disabled', true);
Чтение атрибута:
var isDisabled = $('button').attr('disabled');
Удаление атрибута:
$('button').attr('disabled', null);
Массовая установка атрибутов через объект:
$$('img.thumbnail').attr({
'src': 'placeholder.jpg',
'alt': 'Thumbnail',
'title': 'Изображение превью'
});
В данном примере все выбранные изображения получают одинаковый набор
атрибутов. Использование объекта позволяет избежать повторяющихся
вызовов setAttribute и делает код более читаемым.
Bliss.js поддерживает функциональные значения атрибутов, что позволяет вычислять значение для каждого элемента отдельно:
$$('li').attr('data-index', function(el, i) {
return i + 1;
});
Здесь:
el — текущий элемент.i — индекс элемента в коллекции.data-index.Такой подход удобен для нумерации, генерации уникальных идентификаторов или динамического формирования ссылок.
Метод removeAttr поддерживает массив
атрибутов, что позволяет быстро очищать элементы:
$$('input[type="text"]').removeAttr(['readonly', 'disabled']);
Эта операция удаляет сразу два атрибута у всех выбранных полей ввода, упрощая управление состояниями формы.
Иногда требуется установить атрибуты только для элементов, удовлетворяющих определённому условию:
$$('div.card').each(function(el) {
if (!el.hasAttribute('data-processed')) {
el.attr('data-processed', 'true');
}
});
Использование hasAttribute в сочетании с
attr позволяет избегать повторной обработки элементов и
управлять логикой на уровне batch-операций.
Хотя работа с атрибутами отличается от управления классами, часто
атрибуты тесно связаны с визуальными эффектами. Bliss.js позволяет
комбинировать методы attr и addClass:
$$('button.toggle').each(function(el) {
var active = el.attr('data-active') === 'true';
el.attr('data-active', !active);
el.toggleClass('active', !active);
});
Здесь изменение атрибута data-active сопровождается
синхронизацией класса, что упрощает создание интерактивных элементов
интерфейса.
Batch-операции над атрибутами особенно полезны для форм. Например, массовое управление состояниями полей:
$$('form input, form select').attr('disabled', true);
или динамическое обновление атрибутов name и
value перед отправкой формы:
$$('input[data-dynamic]').attr(function(el, i) {
return {
name: `field_${i}`,
value: el.value.trim()
};
});
Такой подход минимизирует количество циклов и повышает производительность при работе с большим числом элементов формы.
attr или
removeAttr, чем повторно вызывать $$.each.each только когда
требуется логика с условиями; для простых установок объектов
attr эффективнее.Bliss.js превращает работу с DOM-атрибутами из рутинной и многословной задачи в короткие, мощные и легко читаемые конструкции, подходящие как для статических изменений, так и для динамического управления элементами на странице.