Как сделать выполнение ф-ции только для видимых объектов на экране?
Суть задачи:
на странице есть очень много объектов с каждым из которых выполняется однотипное действие (вычисление), если нажать на кнопку. Из-за того, что объектов много, а вычисления многоуровневые, то после нажатия на кнопку (которая запускает вычисления) браузер замирает на 5-10 сек (нагружается кучей операций). Как сделать так, что бы после нажатия на кнопку вычисления выполнялись только над видимыми на данный момент объектами? По аналогии с ajax загрузкой фоток или товаров по мере пролистывания страницы вниз. |
Randomizer,
Выложите код - стрёмно предлагать найти пути в минном поле, не видя карты. |
В jQuery есть такая штука .is(':visible')
Если нужно на чистом js можно посмотреть реализацию в jQuery |
:visible полагаю, что не подходит т.к. этот селектор не проверяет на нахождение объектов в области видимости экрана, а проверяет их на видимость в целом (типа display:none).
Ок, вот пример: $('#starcalc').click(function() { $('.object').each(function(){ $(this).find('.val').clone(); $(this).find('.rnd').remove(); ...еще куча операций... }); }); |
Randomizer,
Цитата:
|
Цитата:
http://javascript.ru/setTimeout http://javascript.ru/setInterval |
Цитата:
С другой стороны, ежели лень копать прошлое, разбейте body на блоки высотой 400-700px и рассортируйте контент по ним. Пройтись по данным блоком - обнаружить три или менее их, входящих в поле зрения, и работатьь с ними |
Часовой пояс GMT +3, время: 06:13. |