Проверка наличия класса

Библиотека Cash — это лёгкий аналог jQuery, предоставляющий удобные методы для работы с DOM в современном JavaScript. Одной из часто используемых операций при работе с DOM является проверка наличия определённого CSS-класса у элемента. Cash предоставляет для этого специализированный метод .hasClass(), который позволяет быстро и эффективно определить, присутствует ли класс на выбранных элементах.


Метод .hasClass()

Синтаксис:

$(selector).hasClass(className)
  • selector — CSS-селектор или DOM-элемент, который нужно проверить.
  • className — строка с именем класса, наличие которого проверяется.

Возвращаемое значение: Метод возвращает булево значение:

  • true, если хотя бы один элемент в выборке содержит указанный класс;
  • false, если ни один элемент не содержит класс.

Пример использования:

const hasActive = $('#menu-item').hasClass('active');

console.log(hasActive); // true или false

В этом примере метод проверяет, содержит ли элемент с идентификатором menu-item класс active.


Проверка нескольких элементов

Cash поддерживает работу с коллекциями элементов. Если выборка содержит несколько элементов, .hasClass() возвращает true, если хотя бы один из элементов содержит указанный класс.

const items = $('.list-item');

if (items.hasClass('selected')) {
    console.log('Есть выбранные элементы');
} else {
    console.log('Выбранных элементов нет');
}

Таким образом, метод позволяет быстро проверять наличие класса у множества элементов без необходимости проходить через цикл вручную.


Отличия от нативного classList.contains

В стандартном JavaScript для проверки класса используется:

element.classList.contains('classname');

Основные различия при использовании Cash:

  1. Работа с коллекциями: .hasClass() применим к набору элементов сразу, возвращая единый результат.
  2. Удобство синтаксиса: не требуется вручную обращаться к каждому элементу.
  3. Цепочка методов: Cash позволяет продолжать цепочку после проверки, например, комбинируя с другими методами.

Практические примеры

Динамическая проверка перед добавлением класса:

const button = $('#submit-btn');

if (!button.hasClass('disabled')) {
    button.addClass('disabled');
}

В данном примере класс disabled добавляется только если его ещё нет у кнопки, предотвращая дублирование и некорректное состояние интерфейса.

Проверка и управление группой элементов:

const tabs = $('.tab');

tabs.each(function() {
    if ($(this).hasClass('active')) {
        console.log('Активная вкладка:', $(this).text());
    }
});

Метод .each() позволяет перебрать все элементы коллекции, а .hasClass() определить, какой из них активен.


Использование с логическими операторами

Проверка наличия класса может использоваться в условных операторах для динамического управления интерфейсом:

const menu = $('#main-menu');

menu.on('click', function() {
    if ($(this).hasClass('open')) {
        $(this).removeClass('open');
    } else {
        $(this).addClass('open');
    }
});

Такой подход удобен для создания переключателей состояния элементов.


Резюме особенностей .hasClass()

  • Проверяет наличие класса у одного или нескольких элементов.
  • Возвращает true, если хотя бы один элемент содержит класс.
  • Работает в связке с другими методами Cash, такими как .addClass(), .removeClass() и .toggleClass().
  • Упрощает работу с DOM по сравнению с нативным classList.contains, особенно при работе с коллекциями.

Метод .hasClass() является ключевым инструментом при построении динамического интерфейса с Cash, позволяя эффективно контролировать состояния элементов на странице и реализовывать условную логику.