Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Tag: 0.0.1
Fetching contributors…

Cannot retrieve contributors at this time

97 lines (65 sloc) 2.816 kB


dom events with a node-style EventEmitter api

browser support


view the demo

var ever = require('ever');
var box = document.querySelector('#box');

var state = false;
ever(box).on('click', function (ev) {
    state = !state;['background-color'] = state ? 'red' : 'rgb(127,127,127)';

setInterval(function () {
}, 3000);


var ever = require('ever')

var ev = ever(element)

Return a new EventEmitter that wraps the HTML node element.

All the usual EventEmitter methods should work with the caveat that adding and removing listeners are proxied through to the underlying dom methods, which only expect a single event object as a parameter.

ev.emit(name, opts)

Emit an event name with options opts. This method creates a synthetic event using document.createEvent() and the corresponding variant of .initEvent() that works with the event name provided.

The options opts will be passed into the matching .initEvent() function signature. Any additional properties will be added to the event object as properties being calling .dispatchEvent().

The signatures are documented in the file init.json in this distribution. To see which event name maps to which init signature, see the types.json file.

ev.on(name, cb), ev.addListener(name, cb)

Just like node's EventEmitter.prototype.on(), listen for events.

Internally this calls .addEventListener().

ev.removeListener(name, cb)

Just like node's EventEmitter.prototype.removeListener(), remove a listener.

Internally this calls .removeEventListener(), however there is no way to obtain a list of all listeners from dom nodes, so only listeners registered by the current ever() instance can be removed.


Just like node EventEmitter.prototype.removeAllListeners(), remove all the listeners with name or everything is name is falsy.

Unlike in node, this function calls removeListener() on each of the events to remove them so that the underlying .removeEventListener() calls get fired.


With npm do:

npm install ever

This module is meant for use in browsers with a node-style module system. Use browserify or similar.



Jump to Line
Something went wrong with that request. Please try again.