Callbacks: Disabling a callback should prevent firing

Thanks to @TheDistantSea for the report!

Fixes gh-1790
Closes gh-1643
This commit is contained in:
Dave Methvin 2014-12-07 20:51:04 -05:00
parent 906caebb3f
commit bc1cb122db
2 changed files with 19 additions and 2 deletions

View File

@ -151,8 +151,10 @@ jQuery.Callbacks = function( options ) {
},
// Remove all callbacks from the list
empty: function() {
if ( list ) {
list = [];
firingLength = 0;
}
return this;
},
// Have the list do nothing anymore

View File

@ -340,3 +340,18 @@ test( "jQuery.Callbacks() - adding a string doesn't cause a stack overflow", fun
ok( true, "no stack overflow" );
});
test( "jQuery.Callbacks() - disabled callback doesn't fire (gh-1790)", function() {
expect( 1 );
var cb = jQuery.Callbacks(),
fired = false,
shot = function() { fired = true; };
cb.disable();
cb.empty();
cb.add( shot );
cb.fire();
ok( !fired, "Disabled callback function didn't fire" );
});