jQuery предоставляет мощные средства для управления классами CSS у элементов HTML. Управление классами позволяет динамически изменять внешний вид страниц, добавлять эффекты, скрывать или показывать элементы и создавать интерактивные интерфейсы.
Для работы с классами в jQuery необходимо сначала выбрать элементы.
Это осуществляется с помощью функции $(), принимающей
CSS-селектор:
// Выбор всех элементов с классом 'menu-item'
var items = $('.menu-item');
// Выбор элемента по ID
var header = $('#header');
Выбранные элементы становятся объектами jQuery, на которых можно применять методы управления классами.
.addClass()Метод .addClass() добавляет один или несколько классов к
выбранным элементам:
// Добавление одного класса
$('#header').addClass('highlighted');
// Добавление нескольких классов через пробел
$('.menu-item').addClass('active selected');
Важно помнить, что если класс уже присутствует у элемента, jQuery не дублирует его.
.removeClass()Метод .removeClass() удаляет один или несколько
классов:
// Удаление одного класса
$('#header').removeClass('highlighted');
// Удаление нескольких классов
$('.menu-item').removeClass('active selected');
Можно вызвать метод без параметров, чтобы удалить все классы элемента:
$('#header').removeClass();
.toggleClass()Метод .toggleClass() добавляет класс, если его нет, и
удаляет, если он присутствует:
// Переключение класса 'active'
$('.menu-item').toggleClass('active');
Метод поддерживает вторым параметром булевое значение, позволяющее явно задать добавление или удаление:
// Добавить класс, если true, иначе удалить
$('.menu-item').toggleClass('active', true); // добавит класс
$('.menu-item').toggleClass('active', false); // удалит класс
.hasClass()Метод .hasClass() возвращает true, если
хотя бы один из выбранных элементов содержит указанный класс:
if ($('#header').hasClass('highlighted')) {
console.log('Элемент подсвечен');
}
Этот метод полезен для условной логики, зависящей от состояния элементов.
Методы .addClass(), .removeClass() и
.toggleClass() могут принимать функцию, которая возвращает
имя класса на основе текущего состояния элемента:
$('.menu-item').addClass(function(index, currentClass) {
if (index % 2 === 0) {
return 'even';
} else {
return 'odd';
}
});
Аргументы функции:
index — порядковый номер элемента в выборке;currentClass — строка с текущими классами
элемента.Классы часто используются совместно с обработчиками событий:
$('.menu-item').on('click', function() {
$(this).toggleClass('selected');
});
При клике на элемент класса menu-item он получает или
теряет класс selected, что позволяет визуально выделять
элементы.
Работа с классами в jQuery выполняется быстро, но важно избегать частых повторных манипуляций внутри циклов без необходимости. Можно группировать добавление или удаление классов для нескольких элементов за один вызов:
$('.menu-item').removeClass('active').addClass('inactive');
Такой подход минимизирует количество операций с DOM и повышает производительность, особенно на больших страницах.
Добавление и удаление классов — основной способ запуска CSS-анимаций:
$('#box').addClass('slide-in');
При этом в CSS можно задать анимацию для класса
slide-in:
.slide-in {
animation: slideIn 0.5s forwards;
}
@keyframes slideIn {
from { transform: translateX(-100%); opacity: 0; }
to { transform: translateX(0); opacity: 1; }
}
jQuery обеспечивает удобный механизм для динамического управления
состоянием анимации через классы без необходимости напрямую изменять
стили через .css().
Методы работы с классами хорошо комбинируются с другими инструментами jQuery:
.find() для поиска элементов внутри контейнера:$('#menu').find('.menu-item').addClass('highlighted');
.children() для изменения классов только у прямых
потомков:$('#menu').children('.menu-item').toggleClass('active');
.filter() и .not() для точного управления
классами у подмножеств элементов:$('.menu-item').not('.disabled').addClass('clickable');
Эти техники позволяют создавать гибкие, читаемые и поддерживаемые скрипты для динамической стилизации интерфейсов.