2012-03-15 11 views
6

Sto utilizzando il gestore di eventi error di jQuery per rilevare errori di caricamento delle immagini. Assomiglia a questo:Catching img load error per i tag <img> creati dopo il caricamento della pagina (ad esempio tramite AJAX)

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

Questo funziona perfettamente per le immagini che si trovano nel DOM quando la pagina viene caricata. Tuttavia, mi piacerebbe rilevare gli errori relativi ai tag <img> che vengono inseriti anche tramite AJAX. Preferirei non dover eseguire determinati codici dopo ogni chiamata AJAX.

Mi piacerebbe qualcosa di simile, anche se questo non sembra funzionare:

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

http://www.unseenrevolution.com/jquery-ajax-error-handling-function/ Potrebbe essere questo ti aiuterà. – Milap

+0

Vorrei poter scoprire perché. Non funziona con 'errore' in quanto ho dovuto rinunciare e chiamare ripetutamente $ ('img'). Errore invece. –

+0

'on' funziona con errori. Non puoi delegarlo semplicemente perché l'evento non bolle. – rstackhouse

risposta

4

Se non si desidera impostare il legame dopo ogni chiamata ajax, si potrebbe desiderare di metterlo in un ajax globale funzione 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

È possibile utilizzare di jQuery dal vivo() o suo delegato() o su() metodi a seconda della versione di jQuery che si sta utilizzando per registrare l'evento di errore su elementi di immagine attuali e future aggiunte a il documento. Refer http://api.jquery.com/live/

+0

Come puoi vedere, l'ho provato e non sembra funzionare. Ho usato 'live' e' on' ('delegate' è semplicemente' on' con argomenti in un ordine diverso) – nicholaides

+0

L'evento di errore non ha bolle in questo modo: https://developer.mozilla.org/en -US/docs/Web/Eventi/errore – rstackhouse

Problemi correlati