can
Version:
MIT-licensed, client-side, JavaScript framework that makes building rich web applications easy.
54 lines (47 loc) • 1.33 kB
JavaScript
/* jshint maxdepth:7*/
steal('can/util/can.js', 'can/util/array/isArrayLike.js', function (can) {
can.each = function (elements, callback, context) {
var i = 0,
key,
len,
item;
if (elements) {
if ( can.isArrayLike(elements) ) {
if(can.List && elements instanceof can.List ) {
for (len = elements.attr("length"); i < len; i++) {
item = elements.attr(i);
if (callback.call(context || item, item, i, elements) === false) {
break;
}
}
} else {
for (len = elements.length; i < len; i++) {
item = elements[i];
if (callback.call(context || item, item, i, elements) === false) {
break;
}
}
}
} else if (typeof elements === "object") {
if (can.Map && elements instanceof can.Map || elements === can.route) {
var keys = can.Map.keys(elements);
for(i =0, len = keys.length; i < len; i++) {
key = keys[i];
item = elements.attr(key);
if (callback.call(context || item, item, key, elements) === false) {
break;
}
}
} else {
for (key in elements) {
if (Object.prototype.hasOwnProperty.call(elements, key) && callback.call(context || elements[key], elements[key], key, elements) === false) {
break;
}
}
}
}
}
return elements;
};
return can;
});