X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=jquery%2Fjquery.js;h=fc1371717cedbf0878a17b60fda177dd2eb689a9;hb=7f1c69041dae15bf544ab96205b4db05ffe4ff8c;hp=3e2d777e8b6d2f88eae9cf304a70867f616892c9;hpb=b2d15586bd7cf3f620793b116b4377b8cfc38c8a;p=jquery.git diff --git a/jquery/jquery.js b/jquery/jquery.js index 3e2d777..fc13717 100644 --- a/jquery/jquery.js +++ b/jquery/jquery.js @@ -570,10 +570,10 @@ jQuery.Select = function( t, context ) { var last = null; while ( t.length > 0 && last != t ) { - var r = []; + var r = []; last = t; - t = jQuery.cleanSpaces(t).replace( /^\/\//i, "" ); + t = jQuery.cleanSpaces(t).replace( /^\/\//i, "" ); var foundToken = false; @@ -668,7 +668,7 @@ jQuery.filter = function(t,r,not) { g = function(a,f) {return jQuery.grep(a,f,true);}; while ( t && t.match(/^[:\\.#\\[a-zA-Z\\*]/) ) { - var re = /^\[ *@([a-z0-9*()_-]+) *([~!|*$^=]*) *'?"?([^'"]*)'?"? *\]/i; + var re = /^\[ *@([a-z*_-][a-z0-9()_-]*) *([~!|*$^=]*) *'?"?([^'"]*)'?"? *\]/i; var m = re.exec(t); if ( m ) @@ -811,10 +811,15 @@ jQuery.event = { 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) { @@ -827,13 +832,28 @@ jQuery.event = { 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) {