node package manager


querySelectorAll selector engine


standalone querySelectorAll selector engine with jQuery-like interface

$ npm install scan --save

Basic usage

var scan = require('scan')

API (0.9)

  • scan() instances are array-like and inherit from scan.prototype and Array.prototype
  • scan() methods chain intuitively or are callable via scan.prototype[method].call(array)
  • Methods are generally compatible with jQuery methods of the same name

scan(query, context?)

  • scan(selector) → elements that match selector
  • scan(selector, node|nodes) → elements that match selector from node or any nodes
  • scan(node|nodes) → nodes wrapped in scan instance

### .find(needle)

  • scan(query).find(selector) → descendants that match selector
  • scan(query).find(element|elements) → elements that descend from query
  • scan(stack).find(fn, scope?) → the first value to pass, value, i, stack)

### .filter(needle)

  • scan(query).filter(nodes, selector) → stack filtered by selector
  • scan(query).filter(fn) → stack filtered by, i)
  • scan(query).filter(element|elements) → stack filtered by one or more elements
  • scan(array).filter(values) → the intersection of 2 arrays

### .not(needle)

  • scan(query).filter(selector)nodes filtered against selector
  • scan(query).not(fn) → stack filtered against, i)
  • scan(query).not(element|elements)→ stack filtered against one or more elements
  • scan(array).not(values) → the difference of 2 arrays

### #find(needle)

  • scan.find(selector, context?) → array of elements that match selector
  • scan.find(stack, fn, scope?) → the first value to pass, value, i, stack)

### #matches(element, selector)

  • scan.matches(element, selector)true if element matches selector

### #contains(haystack, needle)

  • scan.contains(node, element)true if node contains element
  • scan.contains(stack, item, start=0)true if stack contains item
  • scan.contains(str, substr, start=0)true if str contains substr


Selector queries use querySelectorAll where available or else degrade to getElementsByTagName.


Contribute by making edits in /src or reporting issues.

$ npm install
$ grunt test


Tip the developer =)