2015-06-22 3 views
0

Прямо сейчас у меня есть некоторый код, который выполняется после того, как страница загружается так:JS Событие Как каждое изображение Нагрузка

$(window).load(function() { 

    $('.featuredimage').each(function(){ 
     var img_width = $(this).width(); 
     var img_height = $(this).height(); 

     if (img_height >= img_width){ 
      $(this).addClass("artistthirdtall"); 

     }; 

     if (img_height < img_width){ 
      $(this).addClass("artistthirdwide");  
     }; 

    }); 


}); 

Однако, есть некоторые большие изображения на странице и могут быть «мерцание» так как изображения обрабатываются Javascript.

В идеале я хотел бы запускать эту функцию на каждом изображении при его загрузке (а не ждать, пока все они будут загружены).

Я посмотрел на эту страницу события загрузки jQuery: https://api.jquery.com/load-event/, и похоже, есть некоторые серьезные проблемы с ее использованием для проверки загрузки изображений? Но приведенный пример - это именно то, что я пытаюсь сделать.

Так безопасно использовать приведенный пример кода или нет?

Благодаря

PS - Я самоучкой разработчик и не знаю, что много так пожалуйста, простите меня, если я сказал что-то глупо.

+0

Ну, есть плагины там, которые обещают сделать работу лучше, чем JQuery в '.load', как F.E. https://github.com/desandro/imagesloaded Не стесняйтесь делать некоторые дополнительные исследования самостоятельно ... http://stackoverflow.com/search?q=cross+browser+image+load+event, https: // www. google.com/search?q=cross+browser+javascript+image+load+event – CBroe

ответ

0

Я бы добавил класс к вашим изображениям, чтобы скрыть их, пока они не будут готовы. Тогда исчезают их в Поцарапанный $ .ready для нагрузки, основанной на следующем:. Official way to ask jQuery wait for all images to load before executing something

<img src="foo" class="featuredimage ui-hidden-accessible" 

    $(window).load(function() { 
     $('.featuredimage').each(function() { 
     var img_width = $(this).width(); 
     var img_height = $(this).height(); 

     if (img_height >= img_width){ 
      $(this).addClass("artistthirdtall").fadeIn(); /* added fadeIn() */ 
     }; 

     if (img_height < img_width){ 
      $(this).addClass("artistthirdwide").fadeIn(); /* added fadeIn() */  
     }; 
    }); 
}); 
+0

спасибо! Но когда document.ready пожары, мы все еще не знаем ширины и высоты изображения? – tomcritchlow

+0

также - fadeIn(), похоже, не изменяет эффект мерцания? – tomcritchlow