Авторизация

Функция jQuery.each
0

Функция jQuery.each

Опубликовал root в блоге jQuery 06 марта 2010, 04:08
jQuery.each() — это итератор, т.е. такая функция которая перебирает все элементы массива или объекта. Синтаксис данной функции имеет следующий вид:


jQuery.each(collection, callback(indexInArray, valueOfElement) )

  collection - массив или объект
  callback - функция которая будет вызываться для каждого элемента коллекции


Внимание! Не нужно путать функцию jQuery.each() с функцией $(selector).each() — в первом случае функция each работает с произвольной коллекцией, которая передается ей в качестве первого аргумента, а во втором только с элементами jQuery, которые были выбраны в рамках используемого селектора.

Более того, если посмотреть код jQuery, то легко убедиться, что функция $(selector).each() — это не что иное как обертка для функции jQuery.each(), где в качестве первого аргумента передается элемент this:


	// Execute a callback for every element in the matched set.
	// (You can seed the arguments with an array of args, but this is
	// only used internally.)
	each: function( callback, args ) {
		return jQuery.each( this, callback, args );
	}



Возможно, кому-то покажется странным, что в качестве коллекции передается указать this. Хотя на самом деле ничего странного здесь нет, достаточно вспомнить, что экземпляр класса jQuery — это ни что иное как коллекция dom-элементов, которые были выбраны на основании заданного селектора.

Иногда, в процессе перебора элементов коллекции, возникает необходимость прекратить дальнейший перебор. Для этого достаточно в callback-е (см. синтаксис jQuery.each() использовать конструкцию "return false;".

Другими словами функция-обработчик возвращающая булево значение «false» останавливает дальнейший перебор элементов коллекции.

Для наглядности приведу пару примеров:


$.each([111, 43, 43], function(index, value) { 
  alert(index + ': ' + value); 
});

Результат:
0:111
1:43
2:43



var map = { 
  'flammable': 'inflammable', 
  'duh': 'no duh' 
}; 
$.each(map, function(key, value) { 
  alert(key + ': ' + value); 
});

Результат:
flammable: inflammable
duh: no duh 


Если после прочтения заметки появились какие-то мысли, замечания или просто желание сказать спасибо, то милости прошу в комментарии.

Комментарии (0)

RSS свернуть / развернуть

Нажмите здесь, чтобы оставить комментарий (регистрация не требуется)

Ваше имя
Ваш e-mail (будет скрыто и используется только для отправки ответов на ваш комментарий)
Вы — гость, и вам запрещено использовать HTML-теги.
Введите цифры и буквы:

 

Прямой эфир

Предлагаем для вас микродермабразия анонимно и быстро.