chi-events

Easily manage DOM events

npm install chi-events
3 downloads in the last day
32 downloads in the last week
59 downloads in the last month

chi-events

NPM

Build Status Dependency Status

Selenium Test Status

Easily manage DOM events.

This module uses Node.js-style modules, for best results use browserify.

Example

var events = require('chi-events');

var button = document.querySelector('#myButton');

// Listening for events
events(button).on('click', function(e) {
    // Handle the event
});

// Removing listeners
var listen = events(button).on('click', function() {
    listen.remove();
});

// Listening for only one event
events(button).once('click', function() {
    // Only invoked once at most
});

// Triggering an event
// Triggers the 'click' event
events(button).trigger('click');

// Use multiple DOM nodes
events(document.querySelectorAll('a')).on('click', function(e) {
    e.preventDefault();
});

// Use event delegation to listen for events on child nodes
events(container)
    .children('button') // Can use CSS selector or function
    .on('click', function() {
        // `this` is the button element
    });

Reference

events(...nodes)

Creates a new wrapper object. nodes can be any number of nodes or arrays of nodes. Array can be infinitely nested. Also accepts psuedo-array objects, such as NodeList objects.

#on(event, handler)

Adds an event listener to all the DOM nodes. Returns an object that contains a remove function that will remove the event listener from all the nodes.

#once(event, handler)

Adds an event listener to all the DOM nodes. The handler function will be only called one time at most. The first time the event is triggered, the listener will be removed. Return value is the same as #on.

#trigger(event)

Creates an event with the event name event and dispatches the event to all the DOM nodes.

#children(filter)

Returns a new object that can be used to listen to events that occur in the children of the nodes. The returned object contains the #on and #once methods that have the same usage, but use event delegation to listen only for events that occur in child nodes that match filter. filter can be a CSS selector string or a function that takes a node and returns a truthy value if events on that node should be handled.

The context (the this object) in any attached event handlers will be the node that the event bubbled from that matches filter.

Note that since this listens for bubbled events, it will include child nodes that are added after the event listener has been attached.

npm loves you