aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-08-20 06:29:41 +0000
committerJohn Resig <jeresig@gmail.com>2007-08-20 06:29:41 +0000
commitf0353e89abf6643e5a88a649887a71a9ebd973d9 (patch)
tree8cef2d8880713c667f6a03b8a7bc8240d014d4b1
parent2b05e24993c48f3b9c2cb9857090dc4b218b8834 (diff)
downloadjquery-f0353e89abf6643e5a88a649887a71a9ebd973d9.tar.gz
jquery-f0353e89abf6643e5a88a649887a71a9ebd973d9.zip
Just pushed some major speed improvements through for $.each() - we're now seeing a 2x speed improvement over 1.1.3. Some crude results can be found here: http://dev.jquery.com/~john/ticket/each/
-rw-r--r--src/jquery/jquery.js10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index ff33034ed..5ffccc5b6 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -1394,9 +1394,15 @@ jQuery.extend({
if ( obj.length == undefined )
for ( var i in obj )
fn.apply( obj[i], args || [i, obj[i]] );
- else
+ else if ( args ) {
for ( var i = 0, ol = obj.length; i < ol; i++ )
- if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break;
+ 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] );
+
return obj;
},