2010-08-27 12 views
35

Ho un po 'di codice che sto cercando di eseguire una volta che l'immagine ha terminato il caricamento. Io uso questo seguente codice jQuery:jQuery .load() non funziona sull'immagine mia

$("#myimageid").load(function() { 
    alert('Image Loaded'); 
}); 

Tuttavia il popup non viene visualizzato. Non riesco a far funzionare la funzione .load()! Qualcuno ha avuto problemi con questo?

+0

Dove esattamente hai inserito il codice? – Pointy

risposta

87

Se si sta utilizzando questo dopo l'immagine ha già un'origine impostata, è necessario eseguire un controllo aggiuntivo per le immagini della cache (chi ha generato l'evento, poco prima di aver aggiunto un gestore di eventi che lo ascolta). Potete farlo in questo modo:

$("#myimageid").on('load', function() { 
    alert('Image Loaded'); 
}).each(function() { 
    if(this.complete) $(this).load(); 
}); 

aggiornamento per le versioni successive di ricerca, clicca:

if(this.complete) $(this).trigger('load'); 

Utilizzando (this).load(); produrrà un errore di Cannot read property 'indexOf' of undefined

+0

Ha funzionato! Grazie amico $ (document) .ready (function() { $ ("# googleimage"). Load (function() { alert ('Image Loaded'); }). Each (function() {if (this.complete) $ (this) .load();}); }); –

+1

bello, perché è stato così difficile da trovare! –

+0

Stavo andando a downvote per la soluzione non funzionante quando ho capito che mancava un punto quando selezionavo la mia classe. Duh! Grazie e upvoted! –

0

Cosa succede quando svuoti la cache del browser e riprova lo script? Dal jQuery load()docs:

E 'possibile che l'evento carico non sarà attivato se l'immagine è caricata dalla cache del browser. A account per questa possibilità, possiamo utilizzare un evento di carico speciale che spara immediatamente se l'immagine è pronta. event.special.load è attualmente disponibili come plugin

In generale, non è necessario attesa per tutte le immagini di essere pienamente carico. Se il codice può essere eseguito in precedenza , di solito è meglio inserire in un gestore inviato al metodo .ready() .

Quindi sembra che l'immagine memorizzata nella cache non stia attivando l'evento di caricamento, quindi è consigliabile provare il plug-in menzionato. È possibile trovare il file JS per scaricare here.

Spero che questo aiuti!