git.asbjorn.biz
/
jquery.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make sure non-left-click events don't bubble. Fixes #3861.
[jquery.git]
/
src
/
event.js
diff --git
a/src/event.js
b/src/event.js
index
c28e370
..
5271460
100644
(file)
--- a/
src/event.js
+++ b/
src/event.js
@@
-57,6
+57,12
@@
jQuery.event = {
handle = jQuery.data( elem, "handle", eventHandle );
}
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.
// 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;
jQuery.extend( proxy, data || {} );
proxy.guid += data.selector + data.live;
+ data.liveProxy = proxy;
+
jQuery.event.add( this, data.live, liveHandler, data );
},
jQuery.event.add( this, data.live, liveHandler, data );
},
@@
-662,9
+670,9
@@
function testChange( e ) {
jQuery.data( elem, "_change_data", val );
}
jQuery.data( elem, "_change_data", val );
}
- if ( elem.type !== "select" && (data != null || val) ) {
+ if ( data != null || val ) {
e.type = "change";
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 ) ) {
}
if ( jQuery.isFunction( data ) ) {
- thisObject = fn;
fn = data;
data = undefined;
}
fn = data;
data = undefined;
}
@@
-770,7
+777,7
@@
jQuery.each(["bind", "one"], function( i, name ) {
}) : fn;
return type === "unload" && name !== "one" ?
}) : 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 );
});
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,
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);
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 ||
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(".");
}
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 ) {
"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 );
};
return fn ? this.bind( name, fn ) : this.trigger( name );
};
- if ( jQuery.fnAttr ) {
- jQuery.fnAttr[ name ] = true;
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
}
});
}
});