2012-03-15 6 views
6

Estoy usando el controlador de eventos error de jQuery para detectar errores de carga de imágenes. Se ve así:Captura de error de carga img para <img> etiquetas creadas después de la carga de la página (por ejemplo, a través de AJAX)

$(function(){ 
    $('img').error(function(){ 
    // ... do something 
    }) 
}) 

Esto funciona muy bien para las imágenes que están en el DOM cuando se carga la página. Sin embargo, me gustaría detectar los errores de las etiquetas <img> que también se insertan a través de AJAX. Preferiría no tener que ejecutar cierto código después de cada llamada AJAX.

me gustaría algo como esto, aunque esto no parece funcionar:

$('body').on('error', 'img', function(){ 
    // ... do something 
}) 
+0

http://www.unseenrevolution.com/jquery-ajax-erling-handling-function/ Puede ser que esto lo ayude. – Milap

+0

Desearía poder averiguar por qué .on no funciona con 'error' ya que he tenido que darme por vencido y llamar repetidamente $ ('img'). Error en su lugar. –

+0

'on' funciona con error. Simplemente no puedes delegarlo ya que el evento no burbujea. – rstackhouse

Respuesta

4

Si no desea establecer la unión después de cada llamada AJAX, es posible que desee establecer en una ajax global de la función completa

//Gloabal Ajax Complete 
$("body").bind("ajaxSend", function(e, xhr, settings){ 
    //Sent 
}).bind("ajaxComplete", function(e, xhr, settings){ 
    //Complete 
    $('img').error(function(){ 
     // ... do something 
    }) 
}).bind("ajaxError", function(e, xhr, settings, thrownError){ 
    //Error 
}); 
-2

puede utilizar jQuery en vivo() o su delegado() o en() métodos dependiendo de la versión de jQuery que utiliza para registrar el evento de error en los elementos de imagen actuales y futuros que se agregan a el documento. Consulte http://api.jquery.com/live/

+0

Como puede ver, lo intenté y parece que no funciona. He usado 'live' y' on' ('delegate' es solo' on' con argumentos en un orden diferente) – nicholaides

+0

El evento de error no burbujea de acuerdo con esto: https://developer.mozilla.org/en -US/docs/Web/Eventos/error – rstackhouse

Cuestiones relacionadas