Подтвердить что ты не робот

Функция выполнения javascript после полной загрузки изображения

У меня есть следующая строка javascritp $("#hero_image img").attr('src', src);, чтобы изменить изображение. Следующие строки делают то, что они делают, на основе новой ширины изображений, которую я вызывал через $("#hero_image img").width();.

Однако, как я могу обеспечить, чтобы это изображение полностью загрузилось до получения ширины, иначе я вернусь со старой шириной? Установка тайм-аута недостаточно надежна.

4b9b3361

Ответ 1

Вы можете получить ширину в обработчике событий .load(), который запускается после полной загрузки, например:

$("#hero_image img").load(function() {
  alert($(this).width());
}).attr('src', src);

Если вы делаете это и повторно используете изображение, либо привязывайте обработчик .load() один раз, вам нужно различное поведение каждый .one(), поэтому он не продолжает добавлять обработчик событий onload:

$("#hero_image img").one('load', function() {
  alert($(this).width());
}).attr('src', src);

Ответ 2

$(function(){ // document ready
    $('#hero_image img').bind('load', function(){ // image ready
        // do stuff here
    });
});