evenity
Unified event attachment utility
Features
- Attach event to any kind of event-enabled object
- Same event API for both node-like event emitter instance and html element
- Return a closable object to detach event
Getting Started
Install the module with: npm install --save evenity
var evenity = require('evenity')
var EventEmitter = require('events').EventEmitter
var el = document.createElement('div')
var obj = new EventEmitter()
function handler(event) {
}
var eventOnElement = evenity.on(el, 'myevent', handler)
var eventOnObject = evenity.on(obj, 'myevent', handler)
evenity.once( )
evenity.off(el, 'myevent', handler)
evenity.off(obj, 'myevent', handler)
evenity.emit(el, 'click', {foo:'bar'})
eventOnElement.close()
eventOnObject.close()
API
evenity.on()
evenity.on({EventEmitter|HTMLElement} obj, {String} eventname, {Function} handler) => {Object} closable
Attach an event handler to an object. If obj
is an HTMLElement
the handler
will receive an event object. Else, handler
receive the emitted data.
The returned closable
object has a closable.close()
method to detach the handler:
var e = evenity.on(obj, 'eventname', function(event) { } )
e.close()
evenity.once()
evenity.once({EventEmitter|HTMLElement} obj, {String} eventname, {Function} handler)
Same as evenity.on()
but the handler is called only once, then the event is automatically
detached
evenity.off()
evenity.off({EventEmitter|HTMLElement} obj, {String} eventname, {Function} handler)
Detach an event handler
evenity.emit()
evenity.emit({EventEmitter|HTMLElement} obj, {String|CustomEvent} eventnameOrCustomEvent, [{mixed|Event} data])
Emit an event. If obj
is an HTMLElement, then a CustomEvent
is emitted with data as detail. If data is a window.Event instance
then
evenity.emit(el, 'myEvent', { foo: 'bar' })
evenity.emit(el, new CustomEvent('myEvent', { detail: {}, bubbles: true, cancelable: true }))
var canceled = !evenity.emit(el, new MouseEvent('click', { view: window, bubbles: true, cancelable: true }))
The MIT License