mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Fix #13150, .has() w/o args checks for any callbacks. Close gh-1111.
This commit is contained in:
parent
64b55f0b79
commit
54fc5fdfa2
@ -137,9 +137,10 @@ jQuery.Callbacks = function( options ) {
|
|||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
// Control if a given callback is in the list
|
// Check if a given callback is in the list.
|
||||||
|
// If no argument is given, return whether or not list has callbacks attached.
|
||||||
has: function( fn ) {
|
has: function( fn ) {
|
||||||
return jQuery.inArray( fn, list ) > -1;
|
return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
|
||||||
},
|
},
|
||||||
// Remove all callbacks from the list
|
// Remove all callbacks from the list
|
||||||
empty: function() {
|
empty: function() {
|
||||||
|
@ -269,6 +269,53 @@ test( "jQuery.Callbacks.remove - should remove all instances", function() {
|
|||||||
}).remove( fn ).fire();
|
}).remove( fn ).fire();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test( "jQuery.Callbacks.has", function() {
|
||||||
|
|
||||||
|
expect( 13 );
|
||||||
|
|
||||||
|
var cb = jQuery.Callbacks();
|
||||||
|
function getA() {
|
||||||
|
return "A";
|
||||||
|
}
|
||||||
|
function getB() {
|
||||||
|
return "B";
|
||||||
|
}
|
||||||
|
function getC() {
|
||||||
|
return "C";
|
||||||
|
}
|
||||||
|
cb.add(getA, getB, getC);
|
||||||
|
strictEqual( cb.has(), true, "No arguments to .has() returns whether callback function(s) are attached or not" );
|
||||||
|
strictEqual( cb.has(getA), true, "Check if a specific callback function is in the Callbacks list" );
|
||||||
|
|
||||||
|
cb.remove(getB);
|
||||||
|
strictEqual( cb.has(getB), false, "Remove a specific callback function and make sure its no longer there" );
|
||||||
|
strictEqual( cb.has(getA), true, "Remove a specific callback function and make sure other callback function is still there" );
|
||||||
|
|
||||||
|
cb.empty();
|
||||||
|
strictEqual( cb.has(), false, "Empty list and make sure there are no callback function(s)" );
|
||||||
|
strictEqual( cb.has(getA), false, "Check for a specific function in an empty() list" );
|
||||||
|
|
||||||
|
cb.add(getA, getB, function(){
|
||||||
|
strictEqual( cb.has(), true, "Check if list has callback function(s) from within a callback function" );
|
||||||
|
strictEqual( cb.has(getA), true, "Check if list has a specific callback from within a callback function" );
|
||||||
|
}).fire();
|
||||||
|
|
||||||
|
strictEqual( cb.has(), true, "Callbacks list has callback function(s) after firing" );
|
||||||
|
|
||||||
|
cb.disable();
|
||||||
|
strictEqual( cb.has(), false, "disabled() list has no callback functions (returns false)" );
|
||||||
|
strictEqual( cb.has(getA), false, "Check for a specific function in a disabled() list" );
|
||||||
|
|
||||||
|
cb = jQuery.Callbacks("unique");
|
||||||
|
cb.add(getA);
|
||||||
|
cb.add(getA);
|
||||||
|
strictEqual( cb.has(), true, "Check if unique list has callback function(s) attached" );
|
||||||
|
cb.lock();
|
||||||
|
strictEqual( cb.has(), false, "locked() list is empty and returns false" );
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
test( "jQuery.Callbacks() - adding a string doesn't cause a stack overflow", function() {
|
test( "jQuery.Callbacks() - adding a string doesn't cause a stack overflow", function() {
|
||||||
|
|
||||||
expect( 1 );
|
expect( 1 );
|
||||||
|
Loading…
Reference in New Issue
Block a user