A small pure-JavaScript CSS selector engine
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


@version    0.1.1
@date       2015-05-10
@stability  2 - Unstable

Selector lite – Build Coverage

A small pure-JavaScript CSS selector engine.

  • no library dependencies
  • CSS 3 Selector support
  • only 2KB minified and 1KB gzipped


var selector = require("selector-lite")

// Can be used to implement browser built-in functions.

function getElementById(id) {
    return selector.find(this, "#" + id, true)
function getElementsByTagName(tag) {
    return selector.find(this, tag)
function getElementsByClassName(sel) {
    return selector.find(this, "." + sel.replace(/\s+/g, "."))
function querySelector(sel) {
    return selector.find(this, sel, true)
function querySelectorAll(sel) {
    return selector.find(this, sel)


  • selector.find(node, selector, returnFirstMatch) - Find matching elements like querySelector.
  • selector.matches(node, selector) - Returns a Boolean indicating whether or not the element would be selected by the specified selector string.
  • selector.closest(selector) - Returns the Element, descendant of this element (or this element itself), that is the closest ancestor of the elements selected by the selectors given in parameter.
  • selector.next(selector) - Retrieves the next sibling that matches selector.
  • selector.prev(selector) - Retrieves the preceding sibling that matches selector.

Custom selectors

Custom selector can be added to selector.selectorMap, where method shortcuts are available (m->matches, c->closest, n->next, p->prev).

  • _ - node.
  • v - part between () in :nth-child(2n+1).
  • a and b can be used as temp variables.
// Add `:input` selector
selector.selectorMap.input = "_.tagName=='INPUT'"

// Add `:val()` selector
selector.selectorMap.val = "_.value==v"

Coding Style Guidelines

  • Use tabs for indentation, align with spaces
  • Use lowerCamelCase for method and variable names
  • Use UpperCamelCase for constructor names
  • Commit files with Unix-style line endings
  • Do not use spaces in file and directory names Consider substituting a dash (-) where you would normally use spaces.
  • Rebase before pushing
  • Fix tests before push or pull request

External links


Copyright (c) 2015 Lauri Rooden <lauri@rooden.ee>
The MIT License