// args is for internal usage only
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 ( length === undefined ) {
+ if ( isObj ) {
for ( name in object ) {
if ( callback.apply( object[ name ], args ) === false ) {
break;
// A special, fast, case for the most common use of each
} else {
- if ( length === undefined ) {
+ if ( isObj ) {
for ( name in object ) {
if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
break;
});
test("jQuery.each(Object,Function)", function() {
- expect(12);
+ expect(13);
jQuery.each( [0,1,2], function(i, n){
equals( i, n, "Check array iteration" );
});
total = 0;
jQuery.each({"a":3,"b":3,"c":3}, function(i,v){ total += v; return false; });
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(){