X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fevent.js;h=b549cd544e3521fa798ef5d7cf6423893c014f0a;hb=9584e908a2daa2a72bd738302dba7cfd0656dbdf;hp=b55208066a86ee2becf44367ac9d627d24bc828a;hpb=36faab439a1d3a5471847e952d0019e8e4e9b982;p=jquery.git diff --git a/src/event.js b/src/event.js index b552080..b549cd5 100644 --- a/src/event.js +++ b/src/event.js @@ -51,7 +51,7 @@ jQuery.event = { } var events = elemData.events = elemData.events || {}, - eventHandle = elemData.handle, eventHandle; + eventHandle = elemData.handle; if ( !eventHandle ) { elemData.handle = eventHandle = function() { @@ -146,7 +146,7 @@ jQuery.event = { handler = returnFalse; } - var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, + var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, elemData = jQuery.data( elem ), events = elemData && elemData.events; @@ -187,7 +187,7 @@ jQuery.event = { type = namespaces.shift(); namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)") + jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); } eventType = events[ type ]; @@ -197,7 +197,7 @@ jQuery.event = { } if ( !handler ) { - for ( var j = 0; j < eventType.length; j++ ) { + for ( j = 0; j < eventType.length; j++ ) { handleObj = eventType[ j ]; if ( all || namespace.test( handleObj.namespace ) ) { @@ -211,7 +211,7 @@ jQuery.event = { special = jQuery.event.special[ type ] || {}; - for ( var j = pos || 0; j < eventType.length; j++ ) { + for ( j = pos || 0; j < eventType.length; j++ ) { handleObj = eventType[ j ]; if ( handler.guid === handleObj.guid ) { @@ -329,7 +329,7 @@ jQuery.event = { } // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (e) {} + } catch (inlineError) {} if ( !event.isPropagationStopped() && parent ) { jQuery.event.trigger( event, data, parent, true ); @@ -356,7 +356,7 @@ jQuery.event = { } // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (e) {} + } catch (triggerError) {} if ( old ) { target[ "on" + type ] = old; @@ -368,9 +368,9 @@ jQuery.event = { }, handle: function( event ) { - var all, handlers, namespaces, namespace, events; + var all, handlers, namespaces, namespace_sort = [], namespace_re, events, args = jQuery.makeArray( arguments ); - event = arguments[0] = jQuery.event.fix( event || window.event ); + event = args[0] = jQuery.event.fix( event || window.event ); event.currentTarget = this; // Namespaced event handlers @@ -379,7 +379,9 @@ jQuery.event = { if ( !all ) { namespaces = event.type.split("."); event.type = namespaces.shift(); - namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)"); + namespace_sort = namespaces.slice(0).sort(); + namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)"); + event.namespace = namespace_sort.join("."); } events = jQuery.data(this, "events"); @@ -393,14 +395,14 @@ jQuery.event = { var handleObj = handlers[ j ]; // Filter the functions by class - if ( all || namespace.test( handleObj.namespace ) ) { + if ( all || namespace_re.test( handleObj.namespace ) ) { // Pass in a reference to the handler function itself // So that we can later remove it event.handler = handleObj.handler; event.data = handleObj.data; event.handleObj = handleObj; - var ret = handleObj.handler.apply( this, arguments ); + var ret = handleObj.handler.apply( this, args ); if ( ret !== undefined ) { event.result = ret; @@ -980,10 +982,10 @@ jQuery.each(["live", "die"], function( i, name ) { if ( name === "live" ) { // bind live handler - context.each(function(){ - jQuery.event.add( this, liveConvert( type, selector ), + for ( var j = 0, l = context.length; j < l; j++ ) { + jQuery.event.add( context[j], liveConvert( type, selector ), { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - }); + } } else { // unbind live handler @@ -992,12 +994,12 @@ jQuery.each(["live", "die"], function( i, name ) { } return this; - } + }; }); function liveHandler( event ) { var stop, maxLevel, elems = [], selectors = [], - related, match, handleObj, elem, j, i, l, data, close, + related, match, handleObj, elem, j, i, l, data, close, namespace, events = jQuery.data( this, "events" ); // Make sure we avoid non-left-click bubbling in Firefox (#3861) @@ -1005,6 +1007,10 @@ function liveHandler( event ) { return; } + if ( event.namespace ) { + namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); + } + event.liveFired = this; var live = events.live.slice(0); @@ -1028,7 +1034,7 @@ function liveHandler( event ) { for ( j = 0; j < live.length; j++ ) { handleObj = live[j]; - if ( close.selector === handleObj.selector ) { + if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) { elem = close.elem; related = null; @@ -1080,7 +1086,7 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl // Handle event binding jQuery.fn[ name ] = function( data, fn ) { - if ( fn == undefined ) { + if ( fn == null ) { fn = data; data = null; }