cheerio-select
is a CSS selector engine that supports jQuery selectors, based
on the css-select
library. This library
is a thin wrapper around css-select
that
adds support for all of the jQuery positional pseudo-selectors:
:first
: Selects the first element in the set of elements.:last
: Selects the last element in the set of elements.:eq(index)
: Selects the element with the specified index.:nth(index)
: Selects the element with the specified index. This pseudo-class is equivalent to :eq.:gt(index)
: Selects elements with a higher index than the specified value.:lt(index)
: Selects elements with a lower index than the specified value.:even
: Selects even elements, zero-indexed. For example, :even will select the second, fourth, and sixth elements.:odd
: Selects odd elements, zero-indexed. For example, :odd will select the first, third, and fifth elements.:not(:positional)
, where:positional
is any of the above: Excludes elements that match the specified selector.
To install cheerio-select, use npm:
npm install cheerio-select
import { parseDocument } from "htmlparser2";
import { select, filter, is, some } from "cheerio-select";
const document = parseDocument("<html><body><div></div></body></html>");
const dom = parseDocument("<div><p>First<p>Second");
// Select all divs
expect(select("div", dom)).toHaveLength(1);
// Accepts a function as a selector
expect(select((elem) => elem.name === "p", dom)).toHaveLength(2);
// Supports positionals
expect(select("p:first", dom)).toHaveLength(1);
// Supports filtering
expect(filter("p:contains(First)", dom.children)).toHaveLength(1);
// Supports checking whether an element matches a selector
expect(is("p", dom.children[0])).toBe(true);
// Supports checking whether any element in a list matches a selector
expect(some("p", dom.children)).toBe(true);
Only use this module if you will actually use jQuery positional selectors in
your project. If you do not need these specific selectors, it is recommended to
use the css-select
library directly.
This project is licensed under the BSD-2-Clause license. See the LICENSE file for more info.