2010-08-27 37 views
35

Tengo un código que intento ejecutar una vez que la imagen ha terminado de cargarse. Uso este código jQuery siguiente:jQuery .load() no funciona en mi imagen

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

Sin embargo, la ventana emergente nunca aparece. ¡No puedo hacer que la función .load() funcione! Alguien tuvo problemas con esto?

+0

¿Dónde exactamente se han colocado ese código? – Pointy

Respuesta

87

Si ejecuta después de la imagen ya tiene una fuente establecida, necesita hacer una verificación adicional para las imágenes de caché (que activaron el evento, justo antes de agregar un controlador de eventos que lo estaba escuchando). Puede hacerlo de esta manera:

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

de actualización para las versiones posteriores de consulta, uso:

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

Usando (this).load(); producirá un error de Cannot read property 'indexOf' of undefined

+0

¡Eso funcionó! Gracias amigo $ (documento) .ready (función() { $ ("# googleimage"). Carga (función() { alerta ('Imagen cargada'); }). Each (función() {if (this.complete) $ (this) .load();}); }); –

+1

bueno, ¿por qué fue tan difícil de encontrar? –

+0

Estaba yendo a downvote por una solución que no funcionaba cuando me di cuenta de que me faltaba un punto al seleccionar mi clase. Duh! ¡Gracias y votado! –

0

¿Qué sucede cuando borra la memoria caché de su navegador y prueba la secuencia de comandos otra vez? Desde el jQuery load()docs:

Es posible que el evento de carga no se activará si la imagen es cargado desde la caché del navegador. Para tener en cuenta esta posibilidad, podemos utilizar un evento de carga especial que dispara inmediatamente si la imagen está lista. event.special.load es actualmente disponible como un plug-in

En general, no es necesario esperar para todas las imágenes que sean totalmente cargado. Si el código se puede ejecutar anteriormente, generalmente es mejor colocar en un controlador enviado al método .ready() .

Parece que su imagen en caché no está activando el evento de carga, por lo que es posible que desee probar el complemento que se menciona. Puede encontrar el archivo JS para descargar here.

Espero que esto ayude!