Added support for breaking in an object loop (Bug #2111).
[jquery.git] / src / core.js
index bba9883..8bec2c7 100644 (file)
@@ -707,20 +707,22 @@ jQuery.extend({
        // args is for internal usage only\r
        each: function( object, callback, args ) {\r
                if ( args ) {\r
-                       if ( object.length == undefined )\r
+                       if ( object.length == undefined ) {\r
                                for ( var name in object )\r
-                                       callback.apply( object[ name ], args );\r
-                       else\r
+                                       if ( callback.apply( object[ name ], args ) === false )\r
+                                               break;\r
+                       } else\r
                                for ( var i = 0, length = object.length; i < length; i++ )\r
                                        if ( callback.apply( object[ i ], args ) === false )\r
                                                break;\r
 \r
                // A special, fast, case for the most common use of each\r
                } else {\r
-                       if ( object.length == undefined )\r
+                       if ( object.length == undefined ) {\r
                                for ( var name in object )\r
-                                       callback.call( object[ name ], name, object[ name ] );\r
-                       else\r
+                                       if ( callback.call( object[ name ], name, object[ name ] ) === false )\r
+                                               break;\r
+                       } else\r
                                for ( var i = 0, length = object.length, value = object[0]; \r
                                        i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}\r
                }\r