Следующий код работает нормально на IE и Firefox, но Chrome ненавидит его (он работает, но очень запаздывает).Я уверен, что это можно сделать более удобным для браузера, но как?itemPlaceholder - это сотни плавающих делителей размером 100x100 (например, заполнители изображений).Я использую jquery 1.4.4 и Chrome v10.0.648.127.
$(function () {
ReplaceVisible();
$(this).scroll(function () {
ReplaceVisible();
});
});
function ReplaceVisible() {
$('.itemPlaceholder').each(function (index) {
if (HasBeenScrolledTo(this)) {
$itemPlaceholder = $(this);
$itemPlaceholder.replaceWith('<img src="bicycle.jpg" />');
}
else {
return false;
}
});
}
function HasBeenScrolledTo(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
return elemTop < docViewBottom;
}
Редактировать: Заменить append
на replaceWith
в противном случае мы получим множество изображений, добавленныхтот же элемент.