Показать сообщение отдельно
  #1 (permalink)  
Старый 10.11.2012, 19:26
Аспирант
Отправить личное сообщение для zebra741258963 Посмотреть профиль Найти все сообщения от zebra741258963
 
Регистрация: 13.12.2011
Сообщений: 67

реакция .load на загруженное фото
На экране стоят несколько маленьких картинок. jQuery следит - если на маленькой картинке нажали мышкой, то берётся её srcBig и выводится по центру экрана. Например:
<img class=Mini src=mini1.jpg srcBig=big1.jpg>
<img class=Mini src=mini2.jpg srcBig=big2.jpg>
<img class=Mini src=mini3.jpg srcBig=big3.jpg>
<img class=Mini src=XXX.jpg srcBig=XXX.jpg>

Пока картинка грузится у меня светится изображение, дескать Ждите!
Как только она загружается по событию .load надпись пропадает и на экран выводится картинка.
Всё отлично работает, но иногда возникает проблема с .load
Если в параметре srcBig стоит название картини которая уже по каким либо причинам загружена на странице (как например в четвёртой строке, где надо по центру экрана открыть xxx.jpg которая итак уже отображена на экране), то событие .load не происходит (отчасти это логично, так как она уже давно загружена).

Но подскажите - как тогда правильно поступать в такой ситуации чтобы поймать момент когда картинка загружена и готова к показу?

А вот код:
$(document).ready(function(){
  $('img.Mini').click(function(e) { //при нажатии на картику с классом Mini
    $('<img />') //создаёт новую картинку
      .attr('src', $(this).attr('srcBig')) //определяем что она должна содержать ту картинку что прописана у нас в srcBig
      .load(function() { alert(1); }) //когда наша новая картинка загрузилась мы можем начать её красиво выводить
      .appendTo('body'); //а тут просто добавление картики к body (есть конечно и удаление, просто сокраитл чтобы не отвлекал код)
    
    return false;
  });
});

Тоесть при нажатии на картинки 1, 2 и 3 произойдёт событие alert(1), а если нажимаешь на четвёртую картинку - то .load не срабатывает и событие alert(1) не происходит.

Как тогда поступают? Что тогда надо использовать вместо .load? Ведь я не могу следить вдруг где-то (скажем в комментариях на этой странице) данная картинка уже загружена.

Последний раз редактировалось zebra741258963, 10.11.2012 в 19:40.
Ответить с цитированием