Skip to content

Instantly share code, notes, and snippets.

@thinkt4nk
Created October 21, 2011 15:16
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thinkt4nk/1304094 to your computer and use it in GitHub Desktop.
Save thinkt4nk/1304094 to your computer and use it in GitHub Desktop.
Event Emitter With jQuery 1.7's $.Callbacks()
/**
* EventEmitter with jQuery 1.7's $.Callbacks().
*/
function EventEmitter() {
this.topics = {};
}
/**
* Listen on the given `topic` event with `fn`.
*
* @param {String} topic
* @param {Function} fn
* @param {Mixed} ... options for $.Callbacks handling
*/
EventEmitter.prototype.on = function(topic, fn){
(this.topics[topic] = this.topics[topic] || $.Callbacks(Array.prototype.slice.call(arguments,2)))
.add(fn);
return this;
};
/**
* Emit `topic` event with the given args.
*
* @param {String} topic
* @param {Mixed} ...
*/
EventEmitter.prototype.emit = function(topic){
var args = Array.prototype.slice.call(arguments, 1)
, callbacks = this.topics[topic];
callbacks.fire(args);
return this;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment