2012-03-15 12 views
6

jQueryのerrorイベントハンドラを使用してイメージの読み込みエラーをキャッチしています。これは次のようになります。<img>のページを読み込んだ後にタグを埋め込んだときにimgの読み込みエラーが発生する(例:AJAX経由)

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

これは、ページが読み込まれたときにDOMにある画像に最適です。しかし、AJAX経由で挿入される<img>タグのエラーもキャッチしたいと思います。私はすべてのAJAX呼び出しの後に特定のコードを実行する必要はありません。

これが動作していないようですが、私は、このような何かが欲しい:

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

http://www.unseenrevolution.com/jquery-ajax-error-handling-function/ これが役立つかもしれません。 – Milap

+0

願い私はなぜ私があきらめて繰り返し$( 'img')を呼び出さなければならなかったのかというと、.onが 'error'で動作しない理由を知ることができました。 –

+0

'on'はエラーで動作します。イベントがバブルしないので、あなたはそれを委任できません。 – rstackhouse

答えて

4

あなたはすべてのAJAX呼び出しの後に結合を設定しない場合、あなたはそれを設定することをお勧めしますあなたは、あなたがに追加、現在および将来の画像要素のエラーイベントを登録するために使用しているjQueryのバージョンに応じて、jQueryのライブ()またはデリゲート()または()メソッドでは使用することができますグローバルAjaxの完全な機能

//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

ドキュメント。参照先http://api.jquery.com/live/

+0

ご覧のとおり、私はそれを試みましたが、うまくいかないようです。私は 'live'と' on'を使用しました( 'delegate'は異なる順序で引数を使ってちょうど' on'です) – nicholaides

+0

エラーイベントはこれに応じてバブルしません:https://developer.mozilla.org/en -US/docs/Web/Events/error – rstackhouse