Я создал простой пример на jsperf, чтобы помочь объяснить мой вопрос. В примере на jsperf свойство стиля устанавливается по ссылке (я знаю, что это можно сделать без цикла).Что такое наиболее эффективный способ перебора объектов jQuery
Что было бы самым эффективным способом для итерации по объектам jQuery?
Согласно результатам jsperf, .each
работает достаточно хорошо, но это также не самый быстрый. Возможно, есть еще лучшее решение, которого мне не хватает.
1.Example с .each:
$('body').find('div.iojo-test-container a').each(function() {
$(this).css('color', 'red');
});
2.Example с для цикла (немного быстрее, чем .each):
var $a = $('body').find('div.iojo-test-container a');
for (var i = $a.length; --i;) {
$($a[i]).css('color', 'red');
}
3.Fastest способ настройки стиля, но пожалуйста игнорируйте этот случай. Речь идет об итерации и не задании css-стилей.
$('body').find('div.iojo-test-container a').css('color', 'red');
Вы оптимизируете из необходимости или просто потому, что? Если '.each()' не дает вам изжоги, и сайт работает очень медленно, не беспокойтесь о [превентивной оптимизации] (http://pivotallabs.com/preemptive-optimization/). –
Конечно, решение 2. быстрее, поскольку «каждый» добавляет дополнительные накладные расходы, но использование jQuery - это не поиск самого быстрого решения, в редких случаях, когда у вас проблемы с производительностью. Сначала вы должны волноваться о читаемости, и «каждый» - лучший выбор. На стороне клиента вам редко приходится беспокоиться, если функция занимает 100 нс вместо 80 нс. –
@dystroy Я согласен, и в приведенном выше случае я бы пошел с jQuery в .each. –