Bliss.js — легковесная библиотека для работы с DOM, предоставляющая
удобные методы для манипуляций с элементами, включая работу с классами.
Один из ключевых аспектов управления стилями и поведением элементов —
проверка наличия определённых классов. В отличие от чистого JavaScript,
где для этого приходится использовать classList.contains,
Bliss.js упрощает этот процесс через лаконичные методы.
hasClassМетод hasClass используется для проверки, содержит ли
элемент заданный CSS-класс. Его синтаксис:
element.hasClass(className)
element — объект DOM, обёрнутый
Bliss.js или выбранный через Bliss.$.className — строка с именем класса,
наличие которого нужно проверить.true, если класс
присутствует, и false, если
отсутствует.Пример:
var button = Bliss.$('#myButton');
if (button.hasClass('active')) {
console.log('Кнопка активна');
} else {
console.log('Кнопка неактивна');
}
В этом примере hasClass проверяет, есть ли у кнопки
класс active. Такая проверка особенно полезна при условных
операциях с элементами: изменение стиля, переключение состояния или
запуск анимации.
Bliss.js позволяет проверять наличие нескольких классов с помощью перебора:
var classesToCheck = ['highlight', 'selected', 'visible'];
classesToCheck.forEach(function(cls) {
if (button.hasClass(cls)) {
console.log('Элемент содержит класс:', cls);
}
});
Этот подход позволяет динамически работать с группой классов, избегая многократного дублирования кода.
Bliss.js поддерживает работу с коллекциями элементов, выбранных через
селектор. При этом метод hasClass можно применять к каждому
элементу через forEach или встроенный метод
each:
Bliss.$$('.menu-item').forEach(function(item) {
if (item.hasClass('active')) {
item.style.fontWeight = 'bold';
}
});
Здесь перебираются все элементы с классом menu-item, и
каждому активному элементу применяется дополнительный стиль.
Bliss.js предлагает методы addClass,
removeClass и toggleClass, которые удобно
комбинировать с hasClass для создания условной логики:
var box = Bliss.$('#box');
if (!box.hasClass('visible')) {
box.addClass('visible');
} else {
box.removeClass('visible');
}
Такой подход позволяет создавать динамическое поведение элементов, например, открытие и закрытие панелей или переключение вкладок.
Bliss.js оптимизирован для быстрого доступа к классам без
необходимости напрямую обращаться к classList. Проверки
hasClass выполняются мгновенно даже для больших
DOM-структур. Для сложных условий можно использовать цепочки:
var formFields = Bliss.$$('#form input');
formFields.forEach(function(field) {
if (field.hasClass('required') && !field.hasClass('valid')) {
field.style.borderColor = 'red';
}
});
Это позволяет проверять несколько условий одновременно и сразу применять визуальные подсказки пользователю.
Если элементы создаются динамически через методы Bliss.js
(Bliss.$create или клонирование элементов), проверка
классов остаётся корректной:
var newItem = Bliss.$create('div', { class: 'item new' });
if (newItem.hasClass('new')) {
console.log('Элемент только что создан');
}
Метод hasClass реагирует на текущие классы элемента
независимо от того, был ли он добавлен в DOM.
Bliss.$$('.menu-item').forEach(function(item) {
item.on('click', function() {
if (!item.hasClass('active')) {
Bliss.$$('.menu-item').forEach(i => i.removeClass('active'));
item.addClass('active');
}
});
});
Bliss.$$('#form input').forEach(function(input) {
if (input.hasClass('required') && input.value.trim() === '') {
input.addClass('error');
}
});
var panel = Bliss.$('#panel');
if (!panel.hasClass('open')) {
panel.addClass('open');
panel.style.height = '200px';
}
Метод hasClass в этих сценариях становится
ключевым инструментом для создания интерактивного и отзывчивого
интерфейса без сложных проверок и громоздких условий.