handlers[0] = element["on" + type];
}
handlers[handler.guid] = handler;
- element["on" + type] = jQuery.event.handle;
+ element["on" + type] = this.handle;
+
+ if (!this.global[type])
+ this.global[type] = [];
+ this.global[type].push( element );
},
guid: 1,
+ global: {},
// Detach an event or set of events from an element
remove: function(element, type, handler) {
delete element.events[type][i];
else
for ( var j in element.events )
- jQuery.event.remove( element, j );
+ this.remove( element, j );
},
- trigger: function(element,type,data) {
- data = data || [ jQuery.event.fix({ type: type }) ];
- if ( element && element["on" + type] )
+ trigger: function(type,data,element) {
+ // Touch up the incoming data
+ data = data || [];
+
+ // Handle a global trigger
+ if ( !element ) {
+ var g = this.global[type];
+ if ( g )
+ for ( var i = 0; i < g.length; i++ )
+ this.trigger( type, data, g[i] );
+
+ // Handle triggering a single element
+ } else if ( element["on" + type] ) {
+ // Pass along a fake event
+ data.unshift( this.fix({ type: type, target: element }) );
+
+ // Trigger the event
element["on" + type].apply( element, data );
+ }
},
handle: function(event) {