X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=src%2Fevent.js;h=52714600e6b05f8401f82ff22bfa4bacbb4f64b0;hb=150e44cddaa606f9299d4e44ea8a0c01ad8f7166;hp=c28e3704f9cfb319a974ac389dc651ceb5a698ef;hpb=366039a6f05ffa09630e95be604e3f4f26a33bd6;p=jquery.git diff --git a/src/event.js b/src/event.js index c28e370..5271460 100644 --- a/src/event.js +++ b/src/event.js @@ -57,6 +57,12 @@ jQuery.event = { handle = jQuery.data( elem, "handle", eventHandle ); } + // If no handle is found then we must be trying to bind to one of the + // banned noData elements + if ( !handle ) { + return; + } + // Add elem as a property of the handle function // This is to prevent a memory leak with non-native // event in IE. @@ -422,6 +428,8 @@ jQuery.event = { jQuery.extend( proxy, data || {} ); proxy.guid += data.selector + data.live; + data.liveProxy = proxy; + jQuery.event.add( this, data.live, liveHandler, data ); }, @@ -662,9 +670,9 @@ function testChange( e ) { jQuery.data( elem, "_change_data", val ); } - if ( elem.type !== "select" && (data != null || val) ) { + if ( data != null || val ) { e.type = "change"; - return jQuery.event.trigger( e, arguments[1], this ); + return jQuery.event.trigger( e, arguments[1], elem ); } } @@ -759,7 +767,6 @@ jQuery.each(["bind", "one"], function( i, name ) { } if ( jQuery.isFunction( data ) ) { - thisObject = fn; fn = data; data = undefined; } @@ -770,7 +777,7 @@ jQuery.each(["bind", "one"], function( i, name ) { }) : fn; return type === "unload" && name !== "one" ? - this.one( type, data, fn, thisObject ) : + this.one( type, data, fn ) : this.each(function() { jQuery.event.add( this, type, handler, data ); }); @@ -854,9 +861,14 @@ jQuery.fn.extend({ function liveHandler( event ) { var stop = true, elems = [], selectors = [], args = arguments, - related, match, fn, elem, j, i, data, + related, match, fn, elem, j, i, l, data, live = jQuery.extend({}, jQuery.data( this, "events" ).live); + // Make sure we avoid non-left-click bubbling in Firefox (#3861) + if ( event.button && event.type === "click" ) { + return; + } + for ( j in live ) { fn = live[j]; if ( fn.live === event.type || @@ -910,7 +922,7 @@ function liveConvert( type, selector ) { return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "&")].join("."); } -jQuery.each( ("blur focus load resize scroll unload click dblclick " + +jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup error").split(" "), function( i, name ) { @@ -919,8 +931,8 @@ jQuery.each( ("blur focus load resize scroll unload click dblclick " + return fn ? this.bind( name, fn ) : this.trigger( name ); }; - if ( jQuery.fnAttr ) { - jQuery.fnAttr[ name ] = true; + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; } });