]> source.dussan.org Git - jquery.git/commitdiff
The special.handle hook is for origType, not the mapped type.
authorDave Methvin <dave.methvin@gmail.com>
Thu, 10 Nov 2011 02:51:55 +0000 (21:51 -0500)
committerDave Methvin <dave.methvin@gmail.com>
Thu, 10 Nov 2011 02:51:55 +0000 (21:51 -0500)
src/event.js

index 1bcdc429eec876b2c8c303033db763b525353d17..43d246eee16da0be5da03325f7345f0de746b201 100644 (file)
@@ -405,7 +405,6 @@ jQuery.event = {
                        delegateCount = handlers.delegateCount,
                        args = [].slice.call( arguments, 0 ),
                        run_all = !event.exclusive && !event.namespace,
-                       specialHandle = ( jQuery.event.special[ event.type ] || {} ).handle,
                        handlerQueue = [],
                        i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
 
@@ -464,7 +463,8 @@ jQuery.event = {
                                        event.data = handleObj.data;
                                        event.handleObj = handleObj;
 
-                                       ret = ( specialHandle || handleObj.handler ).apply( matched.elem, args );
+                                       ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
+                                                       .apply( matched.elem, args );
 
                                        if ( ret !== undefined ) {
                                                event.result = ret;
@@ -728,7 +728,7 @@ jQuery.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout"
 }, function( orig, fix ) {
-       jQuery.event.special[ orig ] = jQuery.event.special[ fix ] = {
+       jQuery.event.special[ orig ] = {
                delegateType: fix,
                bindType: fix,
 
@@ -737,16 +737,14 @@ jQuery.each({
                                related = event.relatedTarget,
                                handleObj = event.handleObj,
                                selector = handleObj.selector,
-                               oldType, ret;
+                               ret;
 
-                       // For a real mouseover/out, always call the handler; for
-                       // mousenter/leave call the handler if related is outside the target.
+                       // For mousenter/leave call the handler if related is outside the target.
                        // NB: No relatedTarget if the mouse left/entered the browser window
-                       if ( !related || handleObj.origType === event.type || (related !== target && !jQuery.contains( target, related )) ) {
-                               oldType = event.type;
+                       if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
                                event.type = handleObj.origType;
                                ret = handleObj.handler.apply( this, arguments );
-                               event.type = oldType;
+                               event.type = fix;
                        }
                        return ret;
                }