Bug Tracker

Ticket #3127: hover-mike[5762].diff

File hover-mike[5762].diff, 2.4 KB (added by flesler, 14 years ago)

Mike's proposal (378 bytes)

  • jquery/src/event.js

     
    363363                        setup: function() {
    364364                                // Make sure the ready event is setup
    365365                                bindReady();
    366                                 return;
    367366                        },
    368367
    369                         teardown: function() { return; }
    370                 },
    371 
    372                 mouseenter: {
    373                         setup: function() {
    374                                 if ( jQuery.browser.msie ) return false;
    375                                 jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);
    376                                 return true;
    377                         },
    378 
    379                         teardown: function() {
    380                                 if ( jQuery.browser.msie ) return false;
    381                                 jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);
    382                                 return true;
    383                         },
    384 
    385                         handler: function(event) {
    386                                 // If we actually just moused on to a sub-element, ignore it
    387                                 if ( withinElement(event, this) ) return true;
    388                                 // Execute the right handlers by setting the event type to mouseenter
    389                                 event.type = "mouseenter";
    390                                 return jQuery.event.handle.apply(this, arguments);
    391                         }
    392                 },
    393 
    394                 mouseleave: {
    395                         setup: function() {
    396                                 if ( jQuery.browser.msie ) return false;
    397                                 jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);
    398                                 return true;
    399                         },
    400 
    401                         teardown: function() {
    402                                 if ( jQuery.browser.msie ) return false;
    403                                 jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);
    404                                 return true;
    405                         },
    406 
    407                         handler: function(event) {
    408                                 // If we actually just moused on to a sub-element, ignore it
    409                                 if ( withinElement(event, this) ) return true;
    410                                 // Execute the right handlers by setting the event type to mouseleave
    411                                 event.type = "mouseleave";
    412                                 return jQuery.event.handle.apply(this, arguments);
    413                         }
     368                        teardown: function() { }
    414369                }
    415370        }
    416371};
    417372
     373jQuery.each({ mouseover: 'mouseenter', mouseout: 'mouseleave' }, function( orig, fix ){
     374        var ev = jQuery.event.special[ fix ] = {
     375                setup: function(){
     376                        return jQuery.browser.msie ? false : jQuery( this ).bind( orig, ev.handler );
     377                },
     378                teardown: function(){
     379                        return jQuery.browser.msie ? false : jQuery( this ).unbind( orig, ev.handler );
     380                },
     381                handler: function( event ){
     382                        event.type = fix;
     383                        return withinElement( event, this ) || jQuery.event.handle.apply( this, arguments );
     384                }
     385        };                         
     386});
     387
     388
    418389jQuery.fn.extend({
    419390        bind: function( type, data, fn ) {
    420391                return type == "unload" ? this.one(type, data, fn) : this.each(function(){