Библиотека Cash является лёгкой альтернативой jQuery и предоставляет удобный синтаксис для работы с DOM в JavaScript. Одной из ключевых возможностей при выборе элементов на странице являются псевдоклассы и псевдоэлементы, которые позволяют более гибко взаимодействовать с элементами, не меняя разметку HTML.
Псевдоклассы применяются для выбора элементов в зависимости от их состояния, позиции или структуры документа. Cash поддерживает большинство стандартных CSS-псевдоклассов, что позволяет писать лаконичный и читаемый код.
Синтаксис выбора с псевдоклассами:
const items = $('.list-item:first-child'); // выбирает первый элемент с классом list-item
Примеры часто используемых псевдоклассов:
:first-child — первый дочерний элемент родителя.:last-child — последний дочерний элемент родителя.:nth-child(n) — n-й дочерний элемент. Можно
использовать формулы типа 2n для чётных или нечётных
элементов.:not(selector) — выбирает элементы, не соответствующие
указанному селектору.:checked — для выбора отмеченных чекбоксов или
радио-кнопок.:disabled и :enabled — для выбора
элементов формы по состоянию.Пример с динамическим выбором элементов:
$('li:nth-child(odd)').addClass('odd-item'); // добавляет класс ко всем нечётным элементам списка
$('input:checked').each((i, el) => {
console.log(el.value); // выводит значения всех отмеченных чекбоксов
});
Важно помнить, что Cash использует метод
querySelectorAll для поиска элементов, поэтому
поддерживаются только селекторы, совместимые с CSS3.
Псевдоэлементы позволяют стилизовать отдельные части элемента, например, первую букву текста или вставить контент перед элементом. В Cash псевдоэлементы не могут быть выбраны напрямую для манипуляций через методы библиотеки, так как они не существуют в DOM, но можно работать с ними через CSS-свойства.
Основные псевдоэлементы:
::before — вставляет контент перед содержимым
элемента.::after — вставляет контент после содержимого
элемента.::first-letter — позволяет стилизовать первую букву
текста.::first-line — применяет стили к первой строке
блока.Пример применения через CSS:
$('.title').css('content', '"★ "'); // не будет работать напрямую с псевдоэлементом
Для эффективного применения псевдоэлементов необходимо использовать динамическое добавление стилей:
const style = document.createElement('style');
style.textContent = `
.title::before {
content: "★ ";
color: gold;
font-weight: bold;
}
`;
document.head.appendChild(style);
Cash поддерживает сложные комбинации псевдоклассов и обычных селекторов, что позволяет создавать гибкие фильтры элементов.
Примеры комбинированных селекторов:
$('.menu li:first-child.active'); // первый дочерний li с классом active
$('input[type="checkbox"]:not(:checked)'); // все неотмеченные чекбоксы
$('ul li:nth-child(3n)').css('background-color', '#f0f0f0'); // каждый третий элемент списка
Для более точного управления выборкой можно использовать методы
.filter() и .not() вместе с
псевдоклассами.
$('li').filter(':nth-child(even)').addClass('even');
$('li').not(':first-child').hide();
.filter(selector) — оставляет только элементы,
соответствующие селектору..not(selector) — исключает элементы, подходящие под
селектор.:checked, :disabled) требуют актуальной
DOM-структуры — после динамического изменения состояния необходимо
повторно применять селекторы.querySelectorAll, что обеспечивает
производительность, но накладывает ограничения на старые браузеры.<style> или внешние стили.Эта система позволяет создавать динамические, гибкие интерфейсы с минимальным количеством кода, обеспечивая легкость и читаемость, что делает Cash удобным инструментом для работы с DOM и стилизацией элементов через псевдоклассы и псевдоэлементы.