2013-09-08 18 views
14

aşağıdaki js kodu, Resimde Jquery dinamik görüntüler üzerinde çalışmıyor mu?

$(document).on("error", "img", function() { 
      alert('a') 
      this.src = ResolveUrl("~/images/tree-item.png"); 
     }); 

Bu olay

tetiklenir var. Kırık görüntülerin çok

+2

ResolveUrl() kodu nerede? – Unknown

+0

Bu bir istemci tarafı işlevi. Hatta onu kaldırıyorum uyarısı tetiklemiyor – user960567

+2

'error' olayını kullanarak 'document' üzerinde olay temsilci çalıştırabilirsiniz emin değilim. Yanılmıyorsam, bu olay belge nesnesine gelmez. – Itay

cevap

17

sorun nedeniyle (örneğin onclick), onerror olay kabarcıklar halinde varlık değildir diğer etkinliklerinden farklı olarak, belge nesne üzerinde error olay için event delegation kullanamazsınız olmasıdır olmadığından emin am belge nesnesine. yerine bağlayıcı

kullanın, normal bir olay:

$('img').on("error", function() { 
    this.src = ResolveUrl("~/images/tree-item.png"); 
}); 
  • P.S. - Bu, bu komut çalıştırıldığında DOM zaten görüntülerde sadece çalışacaktır.

Eğer DOM eklediğiniz her görüntüye bu olayı eklemek gerekir, hem de dinamik olarak eklenen görüntüleri işlemek için.

Ben, onun eski bir soru, ama belki birisi daha iyi bir çözüm arayan biliyorum
function handleError() { 
    this.src = ResolveUrl("~/images/tree-item.png"); 
} 

// Bind the event to the existing images on the DOM when the document is ready 
$(document).ready(function() { 
    $('img').on("error", handleError); 
} 

// An example for a function that adds images dynamically 
function addImage(imgSource, destination) { 
    var newImg = $("img").attr("src", imgSource) 
         .on("error", handleError); 

    $(destination).append(newImg); 
} 
+2

İşleyiciyi eklemek, kaynak özniteliğini tanımlamadan önce yapılmalıdır. –

2

:

// The function to insert a fallback image 
var imgNotFound = function() { 
    $(this).unbind("error").attr("src", "/path/to/fallback/img.jpg"); 
}; 
// Bind image error on document load 
$("img").error(imgNotFound); 
// Bind image error after ajax complete 
$(document).ajaxComplete(function(){ 
    $("img").error(imgNotFound); 
}); 

Bu kod gövdesi üzerinde img etiketine hata olay dinleyicisi ekler İşte bir örnek yük ve her ajax çağrısından sonra.

İlgili konular