2010-07-19 8 views

risposta

22

si poteva fare in questo modo,

demo

$('<img>').load(function(){ 
    // make sure to bind the load event BEFORE setting the "src" 
    alert('image loaded'); 
}).attr('src',function(){ 
    var imgUrl = $('body').css('background-image'); 
    imgUrl = imgUrl .substring(4, imgUrl .length-1); 
    return imgUrl; 
}).each(function() { 
    // fail-safe for cached images which sometimes don't trigger "load" events 
    if(this.complete) $(this).load(); 
}); 
+0

Attendere fino a quando l'immagine non viene caricata o fino a quando c'è un ritorno sul valore del proprietà 'background-image'? – Squirkle

+1

in realtà quello che è successo è che aspetterà che l'immagine si carichi ... in questo caso l'immagine di sfondo del tag body ... – Reigel

+0

Questo è un trucco abbastanza carino. Come funziona? Non riesco a capire cosa $ ('') sta prendendo di mira ... – Squirkle

2
$('<img>').attr('src',function(){ 
    var imgUrl = $('#body').css('background-image'); 
    imgUrl = imgUrl .substring(5, imgUrl .length-2); 
    return imgUrl; 
}).load(function(){ 
    //Do Something 
}); 

non poteva fare a meno di notare che il codice di cui sopra non funziona in violino. Sembra proprio perché restituisce "url ('/ img-path.jpg')" invece di "/img-path.jpg".

Tuttavia questo metodo non riesce ancora in IE. Qualcuno ha una soluzione ie?

+2

Ho risolto risposta accettata in base al codice e ai commenti –

0
$(document).ready(function(){ 
$('img, .hasBGI').css('opacity',0) 

$('.hasBGI').each(function(){ 
    var $this = $(this) 
     $bgi = $('<img src="'+/*folderFix*/$this.css('backgroundImage')+'">') 
     // $bgi.css(/*hiddingStyle*/) 
     $('body').append($bgi) 
     $bgi.load(function(){ 
      $(this).remove() 
      $this.animate({opacity:1}) 
     }) 
}) 
$('img').load(function(){ 
    $(this).animate({opacity:1}) 
}) 

})

+0

La mia intenzione era di imagesSmoothLoad – domSurgeon

Problemi correlati