-// Detach an event or set of events from an element
-$.event.remove = function(element, type, handler) {
- if (element.events)
- if (type && element.events[type])
- if ( handler )
- delete element.events[type][handler.$$guid];
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function(element, type, handler) {
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( jQuery.browser == "msie" && element.setInterval != undefined )
+ element = window;
+
+ if (!handler.guid) handler.guid = jQuery.event.guid++;
+ if (!element.events) element.events = {};
+ var handlers = element.events[type];
+ if (!handlers) {
+ handlers = element.events[type] = {};
+ if (element["on" + type])
+ handlers[0] = element["on" + type];
+ }
+ handlers[handler.guid] = handler;
+ element["on" + type] = jQuery.event.handle;
+ },
+
+ guid: 1,
+
+ // Detach an event or set of events from an element
+ remove: function(element, type, handler) {
+ if (element.events)
+ if (type && element.events[type])
+ if ( handler )
+ delete element.events[type][handler.guid];
+ else
+ for ( var i in element.events[type] )
+ delete element.events[type][i];