event.metaKey = event.ctrlKey;
}
- // Add which for click: 1 == left; 2 == middle; 3 == right
+ // Add which for click: 1 === left; 2 === middle; 3 === right
// Note: button is not normalized, so don't use it
if ( !event.which && event.button !== undefined ) {
event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
var elem = e.target;
if ( elem.nodeName.toLowerCase() === "input" && elem.type === "radio" ) {
- return jQuery.data( elem, "_change_data", getVal(elem) );
+ jQuery.data( elem, "_change_data", getVal(elem) );
}
}
},
}
// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusBubbles ) {
+if ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ){
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ this.addEventListener( orig, handler, true );
+ },
+ teardown: function() {
+ this.removeEventListener( orig, handler, true );
+ }
+ };
-jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ){
- jQuery.event.special[ orig ] = {
- setup: function() {
- jQuery.event.add( this, fix, ieHandler );
- },
- teardown: function() {
- jQuery.event.remove( this, fix, ieHandler );
+ function handler( e ) {
+ e = jQuery.event.fix( e );
+ e.type = fix;
+ return jQuery.event.handle.call( this, e );
}
- };
-
- function ieHandler() {
- arguments[0].type = orig;
- return jQuery.event.handle.apply(this, arguments);
- }
-});
-
+ });
}
jQuery.each(["bind", "one"], function(i, name) {
data = undefined;
}
fn = thisObject === undefined ? fn : jQuery.event.proxy( fn, thisObject );
- var handler = name == "one" ? jQuery.event.proxy( fn, function( event ) {
+ var handler = name === "one" ? jQuery.event.proxy( fn, function( event ) {
jQuery( this ).unbind( event, handler );
return fn.apply( this, arguments );
}) : fn;