dom-event-listener
Advanced tools
Comparing version 1.0.0 to 1.0.1
35
index.js
'use strict'; | ||
var _ = require('lodash'), | ||
var find = require('lodash/find'), | ||
filter = require('lodash/filter'), | ||
forEach = require('lodash/forEach'), | ||
clone = require('lodash/clone'), | ||
@@ -8,8 +11,17 @@ /* | ||
{ | ||
element: my DOM element | ||
element: node | ||
events: { | ||
load: { | ||
bubbling: [] | ||
nonbubbling: [] | ||
} | ||
bubbling: { | ||
onEvent: function, | ||
handlers: [function, object] | ||
} | ||
nonbubbling: { | ||
onEvent: function, | ||
handlers: [function, object] | ||
} | ||
}, | ||
click: {...}, | ||
keydown: {...}, | ||
... | ||
} | ||
@@ -23,3 +35,3 @@ } | ||
var eventCategory = bubbling? 'bubbling': 'nonbubbling', | ||
event = _.find(events, event => event.element === element)[0]; | ||
event = find(events, event => event.element === element)[0]; | ||
@@ -76,6 +88,6 @@ if (!event) { // When at least 1 event has been added to that element | ||
var eventCategory = bubbling? 'bubbling': 'nonbubbling', | ||
element = _.find(events, item => item.element === event.currentTarget)[0]; | ||
element = find(events, item => item.element === event.currentTarget)[0], | ||
handlers = clone(element.events[event.type][eventCategory].handlers); // Cloning them so event can be removed while running all the handlers | ||
_(element.events[event.type][eventCategory]) | ||
.forEach(function (handler) { | ||
forEach(handlers, function (handler) { | ||
if (typeof handler === 'function') { | ||
@@ -91,3 +103,3 @@ handler(event); | ||
var eventCategory = bubbling? 'bubbling': 'nonbubbling', | ||
event = _.find(events, event => event.element === element)[0]; | ||
event = find(events, event => event.element === element)[0]; | ||
@@ -99,6 +111,7 @@ if (!event || !event.events[eventType] || !event.events[eventType][eventCategory]) { | ||
event = event.events[eventType][eventCategory]; | ||
event.handlers = _.filter(event.handlers, item => item !== handler); | ||
event.handlers = filter(event.handlers, item => item !== handler); | ||
if (event.length === 0) { | ||
removeEventListener(element, eventType, event.onEvent, bubbling); | ||
delete event.onEvent; | ||
} | ||
@@ -105,0 +118,0 @@ } |
{ | ||
"name": "dom-event-listener", | ||
"version": "1.0.0", | ||
"version": "1.0.1", | ||
"description": "Cross browser event listeners", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
# dom-event-listener | ||
Cross browser event listener | ||
# ON GOING DEVELOPMENT, AVAILABLE IN A FEW DAYS |
5953
110
5