jquery event: fixes #4989. blur and focus events now bubble and can be handled using live().

This commit is contained in:
Ariel Flesler 2009-09-14 22:04:22 +00:00
parent f3474c00cd
commit bca8225413
2 changed files with 63 additions and 2 deletions

View file

@ -518,9 +518,10 @@ var withinElement = function( event ) {
}
};
// Create mouseenter and mouseleave events
jQuery.each({
mouseover: 'mouseenter',
mouseout: 'mouseleave'
mouseover: "mouseenter",
mouseout: "mouseleave"
}, function( orig, fix ) {
jQuery.event.special[ fix ] = {
setup: function(){
@ -532,6 +533,36 @@ jQuery.each({
};
});
// Create "bubbling" focus and blur events
jQuery.each({
focus: "focusin",
blur: "focusout"
}, function( orig, fix ){
var event = jQuery.event,
special = event.special,
handle = event.handle;
function ieHandler() {
arguments[0].type = orig;
return handle.apply(this, arguments);
}
special[orig] = {
setup:function() {
if ( this.addEventListener )
this.addEventListener( orig, handle, true );
else
jQuery.event.add( this, fix, ieHandler );
},
teardown:function() {
if ( this.removeEventListener )
this.removeEventListener( orig, handle, true );
else
jQuery.event.remove( this, fix, ieHandler );
}
};
});
jQuery.fn.extend({
bind: function( type, data, fn, thisObject ) {
if ( jQuery.isFunction( data ) ) {