Skip to content

Instantly share code, notes, and snippets.

@rrfaria
Last active June 11, 2019 22:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rrfaria/ee59b80fdfab3c94cb4de16c7ec6e6cc to your computer and use it in GitHub Desktop.
Save rrfaria/ee59b80fdfab3c94cb4de16c7ec6e6cc to your computer and use it in GitHub Desktop.
dynamic event ES6
class handler {
constructor(element) {
this.el = document.querySelectorAll(element);
this.selector = element;
this.self = this;
}
isClass(elem, clss) {
const names = elem.className.trim().split(" ");
const len = names.length;
let i = 0;
for (; i < len; i += 1) {
names[i] = "." + names[i];
}
return names.indexOf(clss) != -1 ? true : false;
};
isElem (elem) {
let status = false;
if(!this.el) {
return status;
}
let i = 0;
const len = this.el.length;
for (; i < len; i += 1) {
if (this.el[i] === elem && !status) {
status = true;
}
}
return status;
};
on(ev, callback) {
const self = this;
document.addEventListener(ev, function (e) {
let elem = e.target;
while (elem != null) {
if ("#" + elem.id == self.selector || self.isClass(elem, this.selector) || self.isElem(elem)) {
callback(e, elem);
}
elem = elem.parentElement;
}
}, false);
}
}
const $ = elm => new handler(elm);
$('.element__selector').on('click', (ev, el) => {
console.log('tets')
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment