2010-03-09 1 views
1

Мне нужно загрузить 2 или более изображений с экрана и отобразить их с переходом только тогда, когда все они загружены.Изображение с вложенной загрузкой с jquery

У меня возникли некоторые проблемы с нагрузкой() Вот моя функция это показывает DIV с сообщением загрузки, когда IMG загружается это скрыть сообщение loadig и вызвать функцию с визуальным переходом (transizione ();)

function load_img(sezione) { 
    if (sezione==1) {sfondo = "sfondo2.jpg"; footer = "footer1.jpg";} 
    else if (sezione==2) {sfondo = "sfondo3.jpg"; footer = "footer2.jpg";} 
    else if (sezione==3) {sfondo = "sfondo4.jpg"; footer = "footer3.jpg";} 
    else if (sezione==4) {sfondo = "sfondo5.jpg"; footer = "footer4.jpg";} 

    $("#loading").fadeIn(); 

    $("#sfondo2").load(function() { 
    $("#loading").hide(); 
    transizione(); 
    }).attr('src', 'img/'+sfondo); 

} 

Как его изменить, чтобы вызвать 2 изображения? Я немного запутался с тем, как работает нагрузка() для изображений

Благодарности

Джузеппе

ответ

1

Функция «нагрузки», для изображений, используются для настройки обработчика событий. Другими словами, он позволяет вам предоставлять функцию, которая будет вызываться, когда изображение полностью загружено.

Если вы хотите, чтобы ждать более одного изображения для загрузки, и когда они все нагружать вы хотите сделать что-то, вы можете создать что-то вроде этого:

var $images = $('#image1, #image2'), count = $images.length; 
$images.load(function() { 
    --count; 
    if (count === 0) { 
    // here the count is zero, so all images are ready 
    transizione(); // ? whatever you want 
    } 
}); 

См? Это означает, что все изображения имеют один и тот же обработчик нагрузки, и то, что он делает, просто отсчитывается до тех пор, пока все разные изображения не будут готовы (поскольку счет будет равен нулю).

Возможно, я не понял вашу потребность здесь, Гусепо.

+0

только личное предпочтение, но мне никогда не нравилось var $ images = $ ('# image1, # image2'), count = $ images.length; над var $ images = $ ('# image1, # image2'); var count = $ images.length; - по отдельным линиям. –

+0

True - форматирование для этой среды необязательно, что я сделал бы в реальном коде. – Pointy

+0

Это именно то, что я пытаюсь сделать, , но я не могу заставить его работать правильно, при написании var $ images = $ ('# image1, # image2'), count = $ images.length; : # image1 и # image2 IDs тегов img? Когда я запускаю функцию в первый раз, когда она работает, тогда «подсчет» возвращает мне некоторые смешные значения, например 3 или -2, -1 Должен ли я каким-то образом изменить значения? Thanks G – Gusepo