Skip to content
Super minimal selector and event library
Branch: master
Clone or download

Latest commit

Latest commit 0520bdb Jul 22, 2013


Type Name Latest commit message Commit time
Failed to load latest commit information.
dist dist builds Jul 12, 2013
src delegation.js tests and IE10 support Jul 12, 2013
test delegation.js tests and IE10 support Jul 12, 2013
.gitignore Big test commit Jul 11, 2013
.travis.yml get travis to look at node 0.10.x rather than 0.1.x! Jul 11, 2013
Gruntfile.js Update Jul 22, 2013
karma.conf.js delegation.js tests and IE10 support Jul 12, 2013
package.json 0.2.3 Jul 12, 2013
testem.json Can also test with testem if you want Jul 11, 2013


A super tiny JavaScript library to execute simple DOM querying and hooking event listeners. Aims to return the raw DOM node for you to manipulate directly, using HTML5 (et al) tech like element.classList or element.innerHTML, etc.

Flattr this

Build Status

Query elements

var links = $('p:first-child a');

If there is more than one link, the return value is NodeList, if there's only a single match, you have an Element object. So you need to have an idea of what to expect if you want to modify the DOM.


Bind events

$('p:first-child a').on('click', function (event) {
  // do something else

Note: the on and trigger methods are on both Node objects and NodeList objects, which also means this affects the document node, so document.on(type, callback) will also work.

Custom events

$('a').on('foo', function () {
  // foo was fired


Arbitrary events / pubsub

$.on('foo', function () {
  // foo was fired, but doesn't require a selector

Turning off events?

Current min.js has no support for turning off events (beyond .removeEventListener -- but even then you don't have the reference function to work with). Currently there's no plans to implement this (as I find I don't disable events very often at all) -- but I'm not closed to the idea. There's an issue open, but it adds quite a bit more logic to a very small file. If there's enough 👍 on the issue, I'll add it in. Equally, if you think min.js should stay simple, please 👎 -- this is useful too.


$('p').forEach(function (el, index) {

Note: jQuery-like libraries tend to make the context this the element. Since we're borrowing forEach from the array object, this does not refer to the element.

Chaining events

$('a').on('foo', bar).on('click', doclick).trigger('foobar');

Also when a single element is matched, you have access to it:

$('a').href = '/some-place.html';

Silent failing

Like jQuery, this tiny library silently fails when it doesn't match any elements. As you might expect.

More info

You can’t perform that action at this time.