Just pushed in my changes for making jQuery.each on objects faster, sample results...
authorJohn Resig <jeresig@gmail.com>
Mon, 20 Aug 2007 07:04:00 +0000 (07:04 +0000)
committerJohn Resig <jeresig@gmail.com>
Mon, 20 Aug 2007 07:04:00 +0000 (07:04 +0000)
src/jquery/jquery.js

index 5ffccc5..76b08ed 100644 (file)
@@ -1391,17 +1391,23 @@ jQuery.extend({
         */
        // args is for internal usage only
        each: function( obj, fn, args ) {
-               if ( obj.length == undefined )
-                       for ( var i in obj )
-                               fn.apply( obj[i], args || [i, obj[i]] );
-               else if ( args ) {
-                       for ( var i = 0, ol = obj.length; i < ol; i++ )
-                               if ( fn.apply( obj[i], args ) === false ) break;
+               if ( args ) {
+                       if ( obj.length == undefined )
+                               for ( var i in obj )
+                                       fn.apply( obj[i], args );
+                       else
+                               for ( var i = 0, ol = obj.length; i < ol; i++ )
+                                       if ( fn.apply( obj[i], args ) === false ) break;
 
                // A special, fast, case for the most common use of each
-               } else
-                       for ( var i = 0, ol = obj.length, val = obj[0]; 
-                               i < ol && fn.call(val,i,val) !== false; val = obj[++i] );
+               } else {
+                       if ( obj.length == undefined )
+                               for ( var i in obj )
+                                       fn.call( obj[i], i, obj[i] );
+                       else
+                               for ( var i = 0, ol = obj.length, val = obj[0]; 
+                                       i < ol && fn.call(val,i,val) !== false; val = obj[++i] );
+               }
 
                return obj;
        },