An introduction to PubSub & jQuery Implementation
javascriptplayground.com
javascriptplayground.com
function PubSub(){
this.listeners = {};
};
PubSub.prototype.subscribe = function(name, fn){
if(!this.listeners[name]){
this.listenders[name] = [];
}
this.listeners.name.push(fn);
return this;
};
PubSub.prototype.publish = function(name, args, binding_object){
if(this.listeners[name]){
var i, l;
for(i = 0, l = this.listeners[name].length; i < l; i++){
this.listeners[name][i].apply(binding_object || this, args);
}
}
return this;
};
PubSub.prototype.unsubscribe = function(name, fn){
//loop through and remove fn from this.listners
};
//usage
var = ps_controller = new PubSub();
//somewhere subscribe to an event
ps_controller.subscribe('test', function(one, two three){ //do stuff });
//publish the test event later
ps_controller.publish('test', [1, 2 3]);Instead of attaching it to the body (global events), you can also attach to the current 'page' element. Now all your events can subscribe to the local event handler. There's an added bonus that when the page is removed, the event handlers are automatically destroyed, too.