Skip to content

Instantly share code, notes, and snippets.

@csuwildcat
Forked from ibolmo/Listener.js
Created February 9, 2011 01:36
Show Gist options
  • Save csuwildcat/817715 to your computer and use it in GitHub Desktop.
Save csuwildcat/817715 to your computer and use it in GitHub Desktop.
// Element Listener Mixin
(function(){
var setup = function(element){
var listener = new Events, removeEvent = listener.removeEvent;
listener.removeEvent = function(key, value){
removeEvent(key, value);
element.removeEvent(key, value);
};
return listener;
};
this.Listener = new Class({
attach: function(key, value){
if (!this.$listener) this.$listener = setup(this.toElement());
this.$listener.addEvent(key, value);
this.toElement().addEvent(key, value);
}.overloadSetter(),
detach: function(key, value){
if (this.$listener){
if (typeof key == 'string') this.$listener.removeEvent(key, value);
else this.$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