aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/callbacks.js2
-rw-r--r--test/unit/callbacks.js21
2 files changed, 22 insertions, 1 deletions
diff --git a/src/callbacks.js b/src/callbacks.js
index a6d4df03f..8831e531a 100644
--- a/src/callbacks.js
+++ b/src/callbacks.js
@@ -69,7 +69,7 @@ jQuery.Callbacks = function( options ) {
fire = function() {
// Enforce single-firing
- locked = options.once;
+ locked = locked || options.once;
// Execute callbacks for all pending executions,
// respecting firingIndex overrides and runtime changes
diff --git a/test/unit/callbacks.js b/test/unit/callbacks.js
index c6c379ded..04d44443d 100644
--- a/test/unit/callbacks.js
+++ b/test/unit/callbacks.js
@@ -366,3 +366,24 @@ QUnit.test( "jQuery.Callbacks() - disabled callback doesn't fire (gh-1790)", fun
cb.fire();
assert.ok( !fired, "Disabled callback function didn't fire" );
} );
+
+QUnit.test( "jQuery.Callbacks() - list with memory stays locked (gh-3469)", function( assert ) {
+
+ assert.expect( 3 );
+
+ var cb = jQuery.Callbacks( "memory" ),
+ fired = 0,
+ count1 = function() { fired += 1; },
+ count2 = function() { fired += 10; };
+
+ cb.add( count1 );
+ cb.fire();
+ assert.equal( fired, 1, "Pre-lock() fire" );
+
+ cb.lock();
+ cb.add( count2 );
+ assert.equal( fired, 11, "Post-lock() add" );
+
+ cb.fire();
+ assert.equal( fired, 11, "Post-lock() fire ignored" );
+} );