Cash — это лёгкая библиотека, вдохновлённая jQuery, предназначенная
для работы с DOM. Она обеспечивает удобный синтаксис для выбора
элементов, управления их содержимым, обработки событий и анимации, при
этом оставаясь компактной и быстрой. Базовая структура обращения к
элементам выглядит как вызов функции $(), принимающей
CSS-селектор, DOM-элемент или коллекцию элементов.
const elems = $('.my-class'); // выбирает все элементы с классом my-class
Важно: $() возвращает объект Cash,
который поддерживает цепочку методов, аналогично jQuery.
Cash полностью поддерживает стандартные CSS-селекторы:
const header = $('#header'); // выбирает элемент с id="header"
const buttons = $('.btn'); // выбирает все элементы с классом btn
const paragraphs = $('p'); // выбирает все абзацы
const items = $('ul li.active'); // все элементы li с классом active внутри ul
const links = $('a[href^="https"]'); // все ссылки, начинающиеся с https
const firstItems = $('li:first-child'); // первый элемент li в родительском элементе
:has()) могут работать иначе или
отсутствовать.querySelector и querySelectorAll используются
напрямую для поиска элементов.Cash автоматически перебирает коллекцию выбранных элементов при вызове методов. Например:
$('.btn').addClass('active'); // добавляет класс active ко всем кнопкам
Метод each позволяет выполнять произвольную функцию для
каждого элемента:
$('li').each((index, el) => {
el.textContent = `Элемент ${index + 1}`;
});
Особенность: Первый параметр функции
index — индекс элемента в коллекции, второй — сам
DOM-элемент.
Cash предоставляет методы для перемещения по DOM:
const parent = $('.item').parent();
const children = $('#list').children();
const inner = $('.container').find('p.highlight');
const siblings = $('.active').siblings();
Эти методы возвращают объекты Cash, позволяя продолжать цепочку вызовов.
Cash предоставляет удобные методы для управления классами:
$('.btn').addClass('selected');
$('.btn').removeClass('disabled');
$('.menu-item').toggleClass('expanded');
if ($('.item').hasClass('visible')) { ... }
Эти методы работают сразу с набором элементов и применяют изменения ко всем элементам коллекции.
$('a').attr('href', 'https://example.com'); // установка
const href = $('a').attr('href'); // чтение
$('input').removeAttr('disabled');
$('input[type="checkbox"]').prop('checked', true);
$('#name').val('Иван');
const value = $('#name').val();
Cash позволяет легко управлять содержимым элементов:
$('.content').html('<p>Новый текст</p>');
$('.title').text('Привет, мир!');
$('#container').empty();
$('#list').append('<li>Новый элемент</li>');
$('#list').prepend('<li>Первый элемент</li>');
$('.item').before('<hr>');
$('.item').after('<hr>');
Cash предоставляет методы для привязки событий:
$('.btn').on('click', (e) => {
console.log('Нажата кнопка', e.target);
});
$('.btn').off('click');
$('.btn').one('click', () => alert('Нажато один раз'));
$('.btn').trigger('click');
Cash позволяет подписываться на стандартные события DOM и пользовательские события, сохраняя цепочку методов.
Cash поддерживает простые анимации:
$('.modal').show();
$('.modal').hide();
$('.menu').toggle();
$('.popup').fadeIn(300);
$('.popup').fadeOut(300);
$('.popup').fadeToggle(300);
$('#panel').slideDown(400);
$('#panel').slideUp(400);
$('#panel').slideToggle(400);
Все методы анимации поддерживают передачу времени в миллисекундах и колбэки после завершения анимации.
Cash позволяет объединять несколько действий в цепочку:
$('.item')
.addClass('active')
.attr('data-status', 'selected')
.fadeIn(200)
.on('click', () => console.log('Кликнут элемент'));
Цепочка сохраняет выбранные элементы, обеспечивая лаконичность и читаемость кода. Это одно из ключевых преимуществ Cash перед чистым DOM API.
Любой объект Cash можно преобразовать в обычный массив элементов:
const elems = $('.item').toArray();
elems.forEach(el => console.log(el.tagName));
Метод get(index) возвращает конкретный DOM-элемент по
индексу:
const firstItem = $('.item').get(0);
getElementById.const buttons = $('.btn'); // не искать каждый раз
buttons.addClass('highlight');
Эта система методов позволяет эффективно работать с DOM, управлять элементами, их атрибутами, классами, содержимым и событиями, оставаясь при этом лёгкой и производительной альтернативой jQuery.