全局事件机制

This commit is contained in:
life
2015-11-21 13:08:49 +08:00
parent cdb8068bd8
commit 9fbbdc90fa

View File

@@ -176,4 +176,53 @@ var Api = {
}
};
//-------------
// 全局事件机制
$.extend(Api, {
_eventCallbacks: {},
_listen: function(type, callback) {
var callbacks = this._eventCallbacks[type] || (this._eventCallbacks[type] = []);
callbacks.push(callback);
},
// on('a b', function(params) {})
on: function(name, callback) {
var names = name.split(/\s+/);
for (var i = 0; i < names.length; ++i) {
this._listen(names[i], callback);
}
return this;
},
// off('a b', function(params) {})
off: function(name, callback) {
var types = name.split(/\s+/);
var i, j, callbacks, removeIndex;
for (i = 0; i < types.length; i++) {
callbacks = this._eventCallbacks[types[i].toLowerCase()];
if (callbacks) {
removeIndex = null;
for (j = 0; j < callbacks.length; j++) {
if (callbacks[j] == callback) {
removeIndex = j;
}
}
if (removeIndex !== null) {
callbacks.splice(removeIndex, 1);
}
}
}
},
// LEA.trigger('a', {});
trigger: function(type, params) {
var callbacks = this._eventCallbacks[type] || [];
if (callbacks.length === 0) {
return;
}
for (var i = 0; i < callbacks.length; i++) {
callbacks[i].call(this, params);
}
}
});
Api._init();