Bliss.js предоставляет лёгкий и удобный интерфейс для работы с
DOM-элементами, значительно упрощая задачи выборки, перебора и
манипуляции коллекциями элементов. Основной строительный блок работы с
коллекциями — метод $$(), который возвращает
массивоподобный объект, на котором можно применять методы Bliss.
Метод $$() позволяет выбрать множество элементов по
CSS-селектору:
const items = $$('ul > li');
const activeItems = $$('ul > li.active');
const linksWithHref = $$('a[href^="https"]');
Коллекции Bliss поддерживают методы перебора, аналогичные стандартным массивам, но с добавлением удобных сокращений.
items.each(function(element, index){
element.textContent = `Элемент ${index + 1}`;
});
each(callback) — перебирает каждый
элемент коллекции. callback получает два аргумента: текущий
элемент и его индекс.$$('ul > li')
.each(el => el.classList.add('highlighted'))
.each(el => console.log(el.textContent));
Для работы с подмножествами коллекций используется метод
filter:
const visibleItems = $$('ul > li').filter(el => el.offsetParent !== null);
Bliss.js облегчает массовое изменение атрибутов и содержимого коллекции:
$$('ul > li').attr('data-index', (el, i) => i);
$$('ul > li').text((el, i) => `Пункт ${i + 1}`);
attr(name, value) — устанавливает или
получает атрибут. Можно передавать функцию для динамического
присвоения.text(value) — задаёт текстовое
содержимое элементов, функция позволяет использовать индекс или текущее
значение.Для управления классами Bliss предлагает лаконичные методы:
$$('ul > li').addClass('visible');
$$('ul > li').removeClass('hidden');
$$('ul > li').toggleClass('active');
addClass, removeClass,
toggleClass применяются ко всей коллекции
одновременно.forEach.Bliss позволяет назначать обработчики событий сразу на все элементы коллекции:
$$('button').on('click', function(event){
console.log('Нажата кнопка:', this.textContent);
});
on(event, handler) — навешивает
обработчик на все элементы коллекции.off с той же
сигнатурой.Bliss делает работу с коллекциями удобной через цепочки методов:
$$('ul > li')
.filter(el => el.textContent.includes('важно'))
.addClass('highlighted')
.on('click', el => console.log(el.textContent));
Для работы с нативными массивами можно использовать
toArray:
const itemsArray = $$('ul > li').toArray();
map, reduce и sort.$$().first() и
last() — возвращают первый или последний
элемент коллекции.eq(index) — выбирает элемент по
индексу, поддерживает отрицательные значения.find(selector) — поиск потомков внутри
текущей коллекции, возвращает новую коллекцию Bliss.const firstItem = $$('ul > li').first();
const nestedLinks = $$('ul > li').find('a');
Эти методы создают удобный и мощный инструмент для работы с DOM, минимизируя дублирование кода и повышая читаемость при работе с группами элементов.