Skip to content

Commit 452270e

Browse files
Extract exported code into internal function and return new instance of it on delegate
1 parent bb64469 commit 452270e

File tree

2 files changed

+32
-30
lines changed

2 files changed

+32
-30
lines changed

index.js

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
var match_selector = require('./match_selector.js');
22

3-
var event_handler = function (root, listeners) {
4-
return function (e) {
3+
var DOMD = function (node) {
4+
// 0 - bubbling, 1 - capturing
5+
var listeners = [{}, {}];
6+
7+
var handler = function (e) {
58
var ret;
69
var target = e.target;
710

@@ -35,7 +38,7 @@ var event_handler = function (root, listeners) {
3538
// Find triggered element cuz we can get child of it in e.target
3639
while (target) {
3740
for (var i in list) {
38-
if (match_selector(root, target, list[i].selector)) {
41+
if (match_selector(node, target, list[i].selector)) {
3942
ret = list[i].callback(e, target);
4043
break;
4144
}
@@ -47,41 +50,40 @@ var event_handler = function (root, listeners) {
4750
}
4851
}
4952

50-
if (target === root) {
53+
if (target === node) {
5154
break;
5255
}
5356

5457
target = target.parentElement;
5558
}
5659
};
57-
};
5860

59-
module.exports = function (node) {
60-
// 0 - bubbling, 1 - capturing
61-
var listeners = [{}, {}];
61+
this.on = function (event, selector, callback, use_capture) {
62+
var map = listeners[use_capture ? 1 : 0];
63+
if (!map[event]) {
64+
map[event] = [];
65+
node.addEventListener(event, handler, !!use_capture);
66+
}
6267

63-
return {
64-
on: function (event, selector, callback, use_capture) {
65-
var map = listeners[use_capture ? 1 : 0];
66-
if (!map[event]) {
67-
map[event] = [];
68-
node.addEventListener(event, event_handler(node, listeners), !!use_capture);
69-
}
68+
map[event].push({
69+
selector: selector,
70+
callback: callback
71+
});
72+
};
7073

71-
map[event].push({
72-
selector: selector,
73-
callback: callback
74-
});
75-
},
76-
77-
off: function (event, selector) {
78-
listeners.forEach(function (map) {
79-
for (var i in map[event] || []) {
80-
if (map[event][i].selector === selector) {
81-
map[event].splice(i, 1);
82-
}
74+
this.off = function (event, selector) {
75+
listeners.forEach(function (map) {
76+
for (var i in map[event] || []) {
77+
if (map[event][i].selector === selector) {
78+
map[event].splice(i, 1);
8379
}
84-
});
85-
}
80+
}
81+
});
8682
};
83+
84+
return this;
85+
};
86+
87+
module.exports = function (node) {
88+
return new DOMD(node);
8789
};

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "domd",
33
"description": "Small dependency free DOM delegator",
44
"keywords": ["DOM", "delegate", "event", "handle", "domd"],
5-
"version": "0.5.5",
5+
"version": "0.7.0",
66
"main": "index.js",
77
"scripts": {
88
"test": "echo \"Error: no test specified\" && exit 1"

0 commit comments

Comments
 (0)