]> source.dussan.org Git - jquery.git/commitdiff
Fix #10984. Use origType when unbinding via the event object.
authorDave Methvin <dave.methvin@gmail.com>
Wed, 14 Dec 2011 02:40:59 +0000 (21:40 -0500)
committerDave Methvin <dave.methvin@gmail.com>
Wed, 14 Dec 2011 02:40:59 +0000 (21:40 -0500)
src/event.js
test/unit/event.js

index f33e8fa3252fdc08d764688f620d4481753d7b6a..8c4e9a8f1b0606cf2519c29083b7878e807ac96b 100644 (file)
@@ -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
                        );
index 4ad8f9d85e31dd15f2397718a8b94d28242cd479..c5481ab0eb8f8547f4f2186db13fe90891fec006 100644 (file)
@@ -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( '<p>Gut Feeling</p>' )
+               .one( "gutfeeling", jQuery.noop )
+               .trigger( "gutfeeling" )        // This one should 
+               .trigger( "gutfeeling" )        // This one should not
+               .remove();
+
        delete jQuery.event.special.gutfeeling;
 });