Added support for breaking in an object loop (Bug #2111).
This commit is contained in:
parent
ff08982508
commit
c39bd07cc9
14
src/core.js
14
src/core.js
|
@ -707,20 +707,22 @@ jQuery.extend({
|
||||||
// args is for internal usage only
|
// args is for internal usage only
|
||||||
each: function( object, callback, args ) {
|
each: function( object, callback, args ) {
|
||||||
if ( args ) {
|
if ( args ) {
|
||||||
if ( object.length == undefined )
|
if ( object.length == undefined ) {
|
||||||
for ( var name in object )
|
for ( var name in object )
|
||||||
callback.apply( object[ name ], args );
|
if ( callback.apply( object[ name ], args ) === false )
|
||||||
else
|
break;
|
||||||
|
} else
|
||||||
for ( var i = 0, length = object.length; i < length; i++ )
|
for ( var i = 0, length = object.length; i < length; i++ )
|
||||||
if ( callback.apply( object[ i ], args ) === false )
|
if ( callback.apply( object[ i ], args ) === false )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// A special, fast, case for the most common use of each
|
// A special, fast, case for the most common use of each
|
||||||
} else {
|
} else {
|
||||||
if ( object.length == undefined )
|
if ( object.length == undefined ) {
|
||||||
for ( var name in object )
|
for ( var name in object )
|
||||||
callback.call( object[ name ], name, object[ name ] );
|
if ( callback.call( object[ name ], name, object[ name ] ) === false )
|
||||||
else
|
break;
|
||||||
|
} else
|
||||||
for ( var i = 0, length = object.length, value = object[0];
|
for ( var i = 0, length = object.length, value = object[0];
|
||||||
i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
|
i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1314,7 +1314,7 @@ test("text(String)", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("$.each(Object,Function)", function() {
|
test("$.each(Object,Function)", function() {
|
||||||
expect(8);
|
expect(12);
|
||||||
$.each( [0,1,2], function(i, n){
|
$.each( [0,1,2], function(i, n){
|
||||||
ok( i == n, "Check array iteration" );
|
ok( i == n, "Check array iteration" );
|
||||||
});
|
});
|
||||||
|
@ -1326,6 +1326,19 @@ test("$.each(Object,Function)", function() {
|
||||||
$.each( { name: "name", lang: "lang" }, function(i, n){
|
$.each( { name: "name", lang: "lang" }, function(i, n){
|
||||||
ok( i == n, "Check object iteration" );
|
ok( i == n, "Check object iteration" );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var total = 0;
|
||||||
|
jQuery.each([1,2,3], function(i,v){ total += v; });
|
||||||
|
ok( total == 6, "Looping over an array" );
|
||||||
|
total = 0;
|
||||||
|
jQuery.each([1,2,3], function(i,v){ total += v; if ( i == 1 ) return false; });
|
||||||
|
ok( total == 3, "Looping over an array, with break" );
|
||||||
|
total = 0;
|
||||||
|
jQuery.each({"a":1,"b":2,"c":3}, function(i,v){ total += v; });
|
||||||
|
ok( total == 6, "Looping over an object" );
|
||||||
|
total = 0;
|
||||||
|
jQuery.each({"a":3,"b":3,"c":3}, function(i,v){ total += v; return false; });
|
||||||
|
ok( total == 3, "Looping over an object, with break" );
|
||||||
});
|
});
|
||||||
|
|
||||||
test("$.prop", function() {
|
test("$.prop", function() {
|
||||||
|
|
Loading…
Reference in a new issue