2013-04-13 15 views
6

Zastanawiam się, czy istnieje sposób na wykrycie zdarzenia związanego z ładowaniem wielu obrazów (w szczególności funkcja powinna być wykonywana po zakończeniu ładowania ostatniego obrazu w danym zestawie).Wykryj zdarzenie ładowania wielu obrazów

Na przykład użytkownik klika łącze, a lighbox wyświetla się z 10 obrazami. Po załadowaniu wszystkich obrazów pasek ładowania powinien zniknąć.

jQuery(".lightbox-image").each(function(){ 
    var image = jQuery(this); 
    jQuery('<img />').attr('src', image.attr('src')).load(function(){ 
     hideLoadingBar(); 
    }); 
}); 

To niestety powoduje hideLoadingBar(); zbyt wcześnie (po jednym zdjęciu zakończeniu ładowania).

P.S.
Potrzebuję również mojej funkcji do pracy po zapisaniu obrazów w pamięci podręcznej, więc: jQuery('#img1, #img2').load(); nie będzie działać.

+0

Zobacz http://stackoverflow.com/a/9624426/235710 –

+0

@MohammadAdil To jest dokładnie to, co nie działa, gdy obrazy są już buforowane. I nie mogę 'trigger ('load')' ręcznie, ponieważ spowoduje to zbyt wcześnie 'hideLoadingBar()'. – Atadj

+0

Jeśli nie jestem złym ładunkiem jest zawsze ajax req, czy próbowałeś callback postępu? – steo

Odpowiedz

1

Cóż, wygląda na to, że nikt nie ma lepszego pomysłu, więc poniżej znajduje się moje rozwiązanie/obejście. Druga odpowiedź na to pytanie jest chyba to, co chcesz używać, ponieważ jest to biblioteka stworzona specjalnie z myślą o tym, ale tu jest rozwiązanie, które mam zamiar używać, ponieważ jest krótszy i prosty:

var allImages = jQuery(".lightbox-image").length; 
var counter = 0; 
jQuery(".lightbox-image").each(function(){ 
    var image = jQuery(this).find('.myimage'); 
    jQuery('<img />').attr('src', image.attr('src')).load(function(){ 
     counter++; 
     if(counter >= allImages){ 
      hideLoadingBar(); 
     } 
    }); 
}); 

Works z pamięci podręcznej obrazów i nie obrazy w pamięci podręcznej.

+0

Nie sądzę, że używanie lib jest dobrym pomysłem na tak proste zadanie. –

+0

Co stanie się z tym rozwiązaniem, jeśli masz, powiedzmy, około 10 dużych obrazów, które są aktualnie ładowane podczas wykonywania tej funkcji. Wtedy zaczniesz kolejne 10 pobrań tych samych obrazów, nieprawdaż? Być może spowolnienie wydajności jest do zaakceptowania. –

+0

Sprawdź również dziwactwa przeglądarki [udokumentowane na stronie wtyczki] (https://github.com/desandro/imagesloaded/wiki/Browser-quirks). –

Powiązane problemy