Итерация по не-jQuery Объектам - $.each ()
jQuery обеспечивает объектную утилиту итерации $.each()
, так же как итератор коллекций jQuery: .each()
. Они не являются взаимозаменяемыми.
$.each()
$.each()
- универсальная функция итерации для цикличного обхода объектов, массивов и подобных массиву объектов. Простые объекты перебираются через имена их свойств, в то время как массивы и подобные массиву объекты перебираются через их индексы.
$.each()
по существу является заменой традиционному циклу for
или for-in
. Пуст дан:
var sum = 0;
var arr = [ 1, 2, 3, 4, 5 ];
Тогда это:
for ( var i = 0, l = arr.length; i < l; i++ ) {
sum += arr[ i ];
}
console.log( sum ); // 15
Может быть заменено этим:
$.each( arr, function( index, value ){
sum += value;
});
console.log( sum ); // 15
Заметьте, что мы не должны обращаться к arr[ index ]
, поскольку значение удобно передается к функции обратного вызова в $.each()
.
Кроме того, пусть дано:
var sum = 0;
var obj = {
foo: 1,
bar: 2
}
Тогда это:
for (var item in obj) {
sum += obj[ item ];
}
console.log( sum ); // 3
Может быть заменен этим:
$.each( obj, function( key, value ) {
sum += value;
});
console.log( sum ); // 3
Снова, мы не должны прямо обращаться к obj[ key ]
, поскольку значение передается прямо к обратному вызову.
Отметьте, что $.each()
для простых объектов, массивов, подобных массиву объектов которые не являются коллекциями jQuery.
Это считалось бы неправильным:
// Неверно:
$.each( $( "p" ), function() {
// Сделать что-либо
});