jquery core: Closes #2827. jQuery.each iterates over functions
This commit is contained in:
parent
ee34b6982a
commit
c6b9654ea8
|
@ -307,10 +307,12 @@ jQuery.extend({
|
||||||
|
|
||||||
// args is for internal usage only
|
// args is for internal usage only
|
||||||
each: function( object, callback, args ) {
|
each: function( object, callback, args ) {
|
||||||
var name, i = 0, length = object.length;
|
var name, i = 0,
|
||||||
|
length = object.length,
|
||||||
|
isObj = length === undefined || jQuery.isFunction(object);
|
||||||
|
|
||||||
if ( args ) {
|
if ( args ) {
|
||||||
if ( length === undefined ) {
|
if ( isObj ) {
|
||||||
for ( name in object ) {
|
for ( name in object ) {
|
||||||
if ( callback.apply( object[ name ], args ) === false ) {
|
if ( callback.apply( object[ name ], args ) === false ) {
|
||||||
break;
|
break;
|
||||||
|
@ -326,7 +328,7 @@ jQuery.extend({
|
||||||
|
|
||||||
// A special, fast, case for the most common use of each
|
// A special, fast, case for the most common use of each
|
||||||
} else {
|
} else {
|
||||||
if ( length === undefined ) {
|
if ( isObj ) {
|
||||||
for ( name in object ) {
|
for ( name in object ) {
|
||||||
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
|
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -494,7 +494,7 @@ test("jQuery.extend(Object, Object)", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("jQuery.each(Object,Function)", function() {
|
test("jQuery.each(Object,Function)", function() {
|
||||||
expect(12);
|
expect(13);
|
||||||
jQuery.each( [0,1,2], function(i, n){
|
jQuery.each( [0,1,2], function(i, n){
|
||||||
equals( i, n, "Check array iteration" );
|
equals( i, n, "Check array iteration" );
|
||||||
});
|
});
|
||||||
|
@ -519,6 +519,13 @@ test("jQuery.each(Object,Function)", function() {
|
||||||
total = 0;
|
total = 0;
|
||||||
jQuery.each({"a":3,"b":3,"c":3}, function(i,v){ total += v; return false; });
|
jQuery.each({"a":3,"b":3,"c":3}, function(i,v){ total += v; return false; });
|
||||||
equals( total, 3, "Looping over an object, with break" );
|
equals( total, 3, "Looping over an object, with break" );
|
||||||
|
|
||||||
|
var f = function(){};
|
||||||
|
f.foo = 'bar';
|
||||||
|
jQuery.each(f, function(i){
|
||||||
|
f[i] = 'baz';
|
||||||
|
});
|
||||||
|
equals( "baz", f.foo, "Loop over a function" );
|
||||||
});
|
});
|
||||||
|
|
||||||
test("jQuery.makeArray", function(){
|
test("jQuery.makeArray", function(){
|
||||||
|
|
Loading…
Reference in a new issue