#jquery #ajax #load #image
#jquery #ajax #загрузить #изображение
Вопрос:
Можно ли определить, все ли изображения загружены в содержимое ajax? Я использовал
var img = $('#slider img');
var length = img.length;
img.load(function(){
length--;
if(length === 0){
alert("All images loaded");
};
});
но загрузка не работает, она не переходит в цикл…
Комментарии:
1. Я не вижу цикла? Откуда вызывается приведенный выше код? Выбор элемента с
$('#slider img')
помощью найдет только элементы, которые существуют в DOM в данный момент, поэтому вы должны быть уверены, что он запускается после того, как ваш вызов AJAX создал элементы изображения.2. @nnnnnn Цикл, о котором я сказал, похож на то, что я не получаю предупреждение «загружены все изображения». Функция загрузки привязывается к imgs, но все равно не работает
3. Вы говорите, что в вашем исходном коде был цикл, но для целей вопроса вы упростили его, вставив вместо этого предупреждение? (Если это так, пожалуйста, отредактируйте свой вопрос, чтобы он не ссылался на вещи, которые мы не видим.) Откуда вы знаете, что функция загрузки привязана к изображениям, вы пробовали ставить оповещение или консоль. войдите в систему как первая строка функции, чтобы подтвердить, сколько раз она вызывается?
4. Спасибо @nnnnnn. Теперь это работает. немного изменил цикл кода, и он работает 🙂
Ответ №1:
Попробуйте что-то вроде этого.
$('#slider img').each(function() {
//Write pre loading script
});
Ответ №2:
Перед настройкой атрибута src вам необходимо добавить загрузку прослушивателя событий. Или вы можете сканировать изображения и проверять, загружено ли каждое из них (по размеру изображения):
var img = $('#slider img');
var length = img.length;
img.each(function(){
if ($(this).width() > 0 amp;amp; $(this).height() > 0)
length--;
if(length === 0){
alert("All images loaded");
};
});
Я не проверял код.