From c584ce4f562536a282c6ccfd78d5d12080850517 Mon Sep 17 00:00:00 2001 From: Dave Methvin Date: Tue, 13 Dec 2011 21:40:59 -0500 Subject: [PATCH] Fix #10984. Use origType when unbinding via the event object. --- src/event.js | 2 +- test/unit/event.js | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/event.js b/src/event.js index f33e8fa32..8c4e9a8f1 100644 --- a/src/event.js +++ b/src/event.js @@ -922,7 +922,7 @@ jQuery.fn.extend({ // ( event ) dispatched jQuery.Event var handleObj = types.handleObj; jQuery( types.delegateTarget ).off( - handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); diff --git a/test/unit/event.js b/test/unit/event.js index 4ad8f9d85..c5481ab0e 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -2521,7 +2521,7 @@ test(".on and .off", function() { }); test("special bind/delegate name mapping", function() { - expect( 6 ); + expect( 7 ); jQuery.event.special.slap = { bindType: "click", @@ -2561,6 +2561,8 @@ test("special bind/delegate name mapping", function() { delegateType: "click", handle: function( event ) { equal( event.handleObj.origType, "gutfeeling", "got a gutfeeling" ); + // Need to call the handler since .one() uses it to unbind + return event.handleObj.handler.call( this , event ); } }; @@ -2579,6 +2581,13 @@ test("special bind/delegate name mapping", function() { .trigger( "gutfeeling" ) .remove(); + // Ensure .one() events are removed after their maiden voyage + jQuery( '

Gut Feeling

' ) + .one( "gutfeeling", jQuery.noop ) + .trigger( "gutfeeling" ) // This one should + .trigger( "gutfeeling" ) // This one should not + .remove(); + delete jQuery.event.special.gutfeeling; }); -- 2.39.5