diff --git a/src/event.js b/src/event.js index 27284af32..1bcdc429e 100644 --- a/src/event.js +++ b/src/event.js @@ -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 ] || {}; diff --git a/test/unit/event.js b/test/unit/event.js index 2c9948290..17caed56b 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -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( '
Strange Pursuit
' ) + .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(