Skip to content
Permalink
Browse files

jquery core: Closes #2827. jQuery.each iterates over functions

  • Loading branch information
flesler committed Jun 20, 2009
1 parent ee34b69 commit c6b9654ea8524e76f49f17f1bb0f6a38ce36bca3
Showing with 13 additions and 4 deletions.
  1. +5 −3 src/core.js
  2. +8 −1 test/unit/core.js
@@ -307,10 +307,12 @@ jQuery.extend({

// 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;
@@ -326,7 +328,7 @@ jQuery.extend({

// 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;
@@ -494,7 +494,7 @@ test("jQuery.extend(Object, Object)", function() {
});

test("jQuery.each(Object,Function)", function() {
expect(12);
expect(13);
jQuery.each( [0,1,2], function(i, n){
equals( i, n, "Check array iteration" );
});
@@ -519,6 +519,13 @@ test("jQuery.each(Object,Function)", function() {
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(){

0 comments on commit c6b9654

Please sign in to comment.
You can’t perform that action at this time.