]> source.dussan.org Git - jquery.git/commitdiff
Fix #10705. Don't bail too soon in `.off()` event string processing.
authorDave Methvin <dave.methvin@gmail.com>
Thu, 10 Nov 2011 02:29:15 +0000 (21:29 -0500)
committerDave Methvin <dave.methvin@gmail.com>
Thu, 10 Nov 2011 02:29:15 +0000 (21:29 -0500)
src/event.js
test/unit/event.js

index 27284af329c0537f15b7a01bb5ffde8d02659a46..1bcdc429eec876b2c8c303033db763b525353d17 100644 (file)
@@ -76,7 +76,7 @@ jQuery.event = {
 
                // Handle multiple events separated by a space
                // jQuery(...).bind("mouseover mouseout", fn);
-               types = hoverHack(types).split( " " );
+               types = jQuery.trim( hoverHack(types) ).split( " " );
                for ( t = 0; t < types.length; t++ ) {
 
                        tns = rtypenamespace.exec( types[t] ) || [];
@@ -159,7 +159,7 @@ jQuery.event = {
                }
 
                // Once for each type.namespace in types; type may be omitted
-               types = hoverHack( types || "" ).split(" ");
+               types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
                for ( t = 0; t < types.length; t++ ) {
                        tns = rtypenamespace.exec( types[t] ) || [];
                        type = tns[1];
@@ -171,7 +171,7 @@ jQuery.event = {
                                for ( j in events ) {
                                        jQuery.event.remove( elem, j + namespaces, handler, selector );
                                }
-                               return;
+                               continue;
                        }
 
                        special = jQuery.event.special[ type ] || {};
index 2c994829082b8ac8a93f10c0b87420f1a6cf9732..17caed56ba54b2cda952707e1daf272dc9a0e8f0 100644 (file)
@@ -2458,6 +2458,30 @@ test(".on and .off", function() {
        jQuery("#onandoff").remove();
 });
 
+
+test(".on and .off, selective mixed removal (#10705)", function() {
+       expect(7);
+
+       var clockout = 0,
+               timingx = function( e ) { 
+                       ok( true, "triggered " + e.type );
+               };
+       
+       jQuery( '<p>Strange Pursuit</p>' )
+               .on( "click", timingx )
+               .on( "click.duty", timingx )
+               .on( "click.now", timingx )
+               .on( "devo", timingx )
+               .on( "future", timingx )
+               .trigger( "click" )             // 3
+               .trigger( "devo" )              // 1
+               .off( ".duty devo " )   // trailing space
+               .trigger( "future" )    // 1
+               .trigger( "click" )             // 2
+               .off( "future click" )
+               .trigger( "click" );    // 0
+});
+
 test("delegated events quickIs", function() {
        expect(14);
        var markup = jQuery(