Библиотека Cash реализует подход, схожий с jQuery, предоставляя цепочку методов для выборки и уточнения элементов DOM. После получения базовой коллекции используются методы фильтрации, чтобы сузить область поиска и эффективнее работать с нужными узлами.
Метод filter() принимает селектор, функцию или объект
Cash и оставляет в коллекции только те элементы, которые удовлетворяют
заданному условию. При передаче селектора сравнивается соответствие
CSS-условию. При использовании функции проверка производится вручную,
что позволяет задавать более сложную логику.
Метод not() устраняет элементы, соответствующие
указанному селектору или набору узлов. В отличие от
filter(), цель которого выделить нужное, not()
служит для удаления ненужного. Комбинация filter() и
not() обеспечивает точную настройку выборки и даёт
возможность выразить фильтры как в позитивной, так и в негативной
форме.
Метод find() дополнительно уточняет выборку за счёт
поиска потомков внутри уже выбранных элементов. Такой подход создаёт
локальный контекст и снижает риск конфликтов с элементами вне текущего
блока. Аналогом для выбора ближайшего предка является метод
closest() — он поднимается по дереву DOM до тех пор, пока
не найдёт узел, подходящий под селектор.
Метод has() фильтрует коллекцию на основе наличия
потомков, удовлетворяющих селектору. Если элемент не содержит
соответствующих узлов, он удаляется из результирующей коллекции. Это
дополняет find(), поскольку выбор осуществляется по
признаку наличия, а не по факту реального возвращения потомков.
Метод eq() позволяет выбрать элемент по индексу в
текущей выборке. Поддерживают негативные индексы для обращения с конца.
Для получения первого и последнего элементов существуют методы
first() и last(). Они не только удобны, но и
читаемы, что особенно важно для кода с большим количеством операций над
DOM.
Метод slice() копирует выбранный диапазон элементов — по
аналогии с одноимённым методом массивов JavaScript. Это даёт возможность
создавать подмножества коллекции для передачи в другие операции.
Наиболее мощный приём — последовательное применение нескольких методов уточнения. Начальная выборка может быть сделана довольно широкой, а затем шаг за шагом ужата посредством:
filter() или has();not();eq(),
first(), last() или slice().Цепочки такого рода повышают читаемость и позволяют избежать написания громоздких селекторов.
Частое применение сложных CSS-селекторов в фильтрации может негативно
сказаться на производительности. Разбиение операций на несколько шагов
зачастую быстрее и нагляднее. Метод filter() особенно
полезен для логики, завязанной на состояние DOM, поскольку допускает
использование предикатов на JavaScript.
Читаемость фильтрующих цепочек возрастает при сохранении промежуточных результатов в переменные. Это помогает документировать намерение и делать код поддерживаемым даже при большом количестве условий.
Фильтрация выборки в Cash опирается на концепцию коллекции как набора DOM-узлов, над которыми выполняются операции, подобные операциям массивов. Методы возвращают новую коллекцию или ссылку на текущую, что упрощает композицию и минимизирует побочные эффекты. Поддержка цепочек позволяет моделировать фильтрацию естественно, используя короткие и выразительные конструкции.
Последовательное применение фильтров формирует точную выборку, при этом остаётся возможность дальнейших операций, таких как модификация атрибутов, работа с классами, обработка событий или эффектов. За счёт этого Cash сохраняет баланс между минималистичностью и практичностью в задачах, связанных с тонкой настройкой выборки элементов.