piskel/dev/js/utils/Event.js
2017-05-22 09:56:42 +02:00

48 lines
1.4 KiB
JavaScript

(function () {
var ns = $.namespace('pskl.utils');
ns.Event = {};
ns.Event.addEventListener = function (el, type, callback, scope, args) {
if (typeof el === 'string') {
el = document.querySelector(el);
}
var listener = {
el : el,
type : type,
callback : callback,
handler : args ? callback.bind(scope, args) : callback.bind(scope)
};
scope.__pskl_listeners = scope.__pskl_listeners || [];
scope.__pskl_listeners.push(listener);
el.addEventListener(type, listener.handler);
};
ns.Event.removeEventListener = function (el, type, callback, scope) {
if (scope && scope.__pskl_listeners) {
var listeners = scope.__pskl_listeners;
for (var i = 0 ; i < listeners.length ; i++) {
var listener = listeners[i];
if (listener.callback === callback && listener.el === el && listener.type === type) {
el.removeEventListener(type, listeners[i].handler);
listeners.splice(i, 1);
break;
}
}
}
};
ns.Event.removeAllEventListeners = function (scope) {
if (scope && scope.__pskl_listeners) {
var listeners = scope.__pskl_listeners;
for (var i = 0 ; i < listeners.length ; i++) {
var listener = listeners[i];
listener.el.removeEventListener(listener.type, listener.handler);
}
scope.__pskl_listeners = [];
}
};
})();