Классы и стили
Внешний вид элементов лучше описывать в CSS-классах, а из JavaScript только добавлять и убирать эти классы. Для этого в jQuery есть четыре метода. Для редких случаев, когда нужно задать конкретное значение стиля, есть метод css().
Добавление и удаление класса
<style>
.done { text-decoration: line-through; color: gray; }
</style>
<ul>
<li>Купить хлеб</li>
<li>Позвонить Олегу</li>
</ul>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
$('li').first().addClass('done');
</script>Первый пункт зачёркнут: ему добавлен класс done, а стиль описан в <style>. В проекте стили лежат в отдельном файле, например style.css.
Остальные методы работают так же:
| Метод | Что делает |
|---|---|
addClass('done') | Добавляет класс |
removeClass('done') | Удаляет класс |
toggleClass('done') | Добавляет, если класса нет, и удаляет, если есть |
hasClass('done') | Возвращает true или false |
Несколько классов перечисляют через пробел: addClass('done important').
Переключение по условию
У toggleClass() есть второй аргумент: true — добавить класс, false — убрать. Это удобно, когда состояние уже известно:
<style>
.done { text-decoration: line-through; color: gray; }
</style>
<ul>
<li>Купить хлеб</li>
<li>Позвонить Олегу</li>
</ul>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
const isDone = true;
$('li').eq(1).toggleClass('done', isDone);
console.log($('li').eq(1).hasClass('done')); // true
console.log($('.done').length); // 1
</script>Второй пункт зачёркнут, а вывод показывает, что класс на месте.
Метод css
css() читает и задаёт стили прямо в атрибуте style элемента:
<p id="counter">Задач: 3</p>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
$('#counter').css('font-size', 20);
$('#counter').css({ color: 'white', backgroundColor: 'teal', padding: '4px 8px' });
console.log($('#counter').css('font-size')); // 20px
</script>К числам jQuery сам добавляет px. Имена свойств пишут как в CSS (font-size) или в стиле JavaScript (backgroundColor). При чтении css() возвращает вычисленное значение — то, которое браузер реально применил.
То же на обычном JavaScript
addClass, removeClass, toggleClass, hasClass соответствуют методам classList.add, classList.remove, classList.toggle, classList.contains. Метод css() — свойству element.style и функции getComputedStyle().
Частая ошибка
Ставить точку в имени класса: addClass('.done'). Точка нужна только в селекторе. Метод добавит класс с именем .done, и стиль не применится. Правильно: $('.done') для поиска и addClass('done') для добавления.