jQuery.extend( proxy, data || {} );
proxy.guid += data.selector + data.live;
+ data.liveProxy = proxy;
+
jQuery.event.add( this, data.live, liveHandler, data );
},
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 );
}
}
});
function liveHandler( event ) {
- var stop = true, elems = [], selectors = [], args = arguments,
- related, match, fn, elem, j, i, data,
+ var stop, elems = [], selectors = [], args = arguments,
+ 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 ||