Skip to content

Instantly share code, notes, and snippets.

@ibolmo
Forked from cpojer/Listener.js
Created February 9, 2011 01:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save ibolmo/817709 to your computer and use it in GitHub Desktop.
Save ibolmo/817709 to your computer and use it in GitHub Desktop.
// Element Listener Mixin
(function(){
// Prototype.. doesn't actually work..
this.Listener = new Class(function(){
var listener = new Events, removeEvent = listener.removeEvent;
listener.removeEvent = function(key, value){
removeEvent(key, value);
element.removeEvent(key, value);
};
return {
attach: function(key, value){
listener.addEvent(key, value);
this.toElement().addEvent(key, value);
}.overloadSetter(),
detach: function(key, value){
if (typeof key == 'string') listener.removeEvent(key, value);
else listener.removeEvents(key);
return this;
},
toElement: function(){
return this.element;
}
};
});
}).call(this);
// Implementation
var MyClass = new Class({
Implements: [Listener, Class.Binds],
initialize: function(){
this.element = new Element('div');
this.attach({
click: this.bound('onClick'),
'keyup:relay(:input)': this.bound('onKeyUp')
});
}
});
// Use
var myInstance = new MyClass();
myInstance.detach();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment